python进阶教程之循环相关函数range、enumerate、zip


Posted in Python onAugust 30, 2014

在“循环”一节,我们已经讨论了Python基本的循环语法。这一节,我们将接触更加灵活的循环方式。

range()

在Python中,for循环后的in跟随一个序列的话,循环每次使用的序列元素,而不是序列的下标。

之前我们已经使用过range()来控制for循环。现在,我们继续开发range的功能,以实现下标对循环的控制:

S = 'abcdefghijk'

for i in range(0,len(S),2):

    print S[i]

在该例子中,我们利用len()函数和range()函数,用i作为S序列的下标来控制循环。在range函数中,分别定义上限,下限和每次循环的步长。这就和C语言中的for循环相类似了。

enumerate()

利用enumerate()函数,可以在每次循环中同时得到下标和元素:

S = 'abcdefghijk'

for (index,char) in enumerate(S):

    print index

    print char

实际上,enumerate()在每次循环中,返回的是一个包含两个元素的定值表(tuple),两个元素分别赋予index和char

zip()

如果你多个等长的序列,然后想要每次循环时从各个序列分别取出一个元素,可以利用zip()方便地实现:

ta = [1,2,3]

tb = [9,8,7]

tc = ['a','b','c']

for (a,b,c) in zip(ta,tb,tc):

    print(a,b,c)

每次循环时,从各个序列分别从左到右取出一个元素,合并成一个tuple,然后tuple的元素赋予给a,b,c

zip()函数的功能,就是从多个列表中,依次各取出一个元素。每次取出的(来自不同列表的)元素合成一个元组,合并成的元组放入zip()返回的列表中。zip()函数起到了聚合列表的功能。

我们可以分解聚合后的列表,如下:

ta = [1,2,3]

tb = [9,8,7]
# cluster

zipped = zip(ta,tb)

print(zipped)
# decompose

na, nb = zip(*zipped)

print(na, nb)

总结

range()

enumerate()

zip()

Python 相关文章推荐
跟老齐学Python之一个免费的实验室
Sep 14 Python
用Python编写生成树状结构的文件目录的脚本的教程
May 04 Python
全面理解Python中self的用法
Jun 04 Python
Django Admin 实现外键过滤的方法
Sep 29 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
python排序函数sort()与sorted()的区别
Sep 18 Python
python实现控制台打印的方法
Jan 12 Python
python装饰器原理与用法深入详解
Dec 19 Python
Python Des加密解密如何实现软件注册码机器码
Jan 08 Python
Django mysqlclient安装和使用详解
Sep 17 Python
python实现三种随机请求头方式
Jan 05 Python
Django rest framework如何自定义用户表
Jun 09 Python
python进阶教程之函数参数的多种传递方法
Aug 30 #Python
python进阶教程之模块(module)介绍
Aug 30 #Python
Python中的闭包实例详解
Aug 29 #Python
python进阶教程之文本文件的读取和写入
Aug 29 #Python
Python中__call__用法实例
Aug 29 #Python
python进阶教程之词典、字典、dict
Aug 29 #Python
python字符串排序方法
Aug 29 #Python
You might like
PHP header()函数常用方法总结
2014/04/11 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
js单向链表的具体实现实例
2013/06/21 Javascript
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
JS实现的数字格式化功能示例
2017/02/10 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
原生JavaScript实现todolist功能
2018/03/02 Javascript
JS实现读取xml内容并输出到div中的方法示例
2018/04/19 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
js实现小时钟效果
2020/03/25 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
在vue-cli3.0 中使用预处理器 (Sass/Less/Stylus) 配置全局变量操作
2020/08/10 Javascript
VUE项目实现主题切换的多种方法
2020/11/26 Vue.js
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
Python之eval()函数危险性浅析
2014/07/03 Python
在Python中使用itertools模块中的组合函数的教程
2015/04/13 Python
python 中if else 语句的作用及示例代码
2018/03/05 Python
深入浅析python with语句简介
2018/04/11 Python
python控制windows剪贴板,向剪贴板中写入图片的实例
2018/05/31 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
使用phonegap获取设备的一些信息方法
2017/03/31 HTML / CSS
加拿大女包品牌:Matt & Nat
2017/05/12 全球购物
Vita Fede官网:在意大利手工制作,在纽约市设计
2019/10/25 全球购物
数组越界问题
2015/10/21 面试题
小学生自我评价范例
2013/09/24 职场文书
开业庆典主持词
2014/03/21 职场文书
员工年终自我评价
2014/09/14 职场文书
《改造我们的学习》心得体会
2014/11/07 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
如何用PHP实现多线程编程
2021/05/26 PHP
javascript的setTimeout()使用方法总结
2021/11/20 Javascript