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 Django模板的使用方法(图文)
Nov 04 Python
Python全局变量用法实例分析
Jul 19 Python
python中 logging的使用详解
Oct 25 Python
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
详解python 3.6 安装json 模块(simplejson)
Apr 02 Python
在django admin中添加自定义视图的例子
Jul 26 Python
Python解释器及PyCharm工具安装过程
Feb 26 Python
Python实现ElGamal加密算法的示例代码
Jun 19 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
PyCharm上安装Package的实现(以pandas为例)
Sep 18 Python
python中Matplotlib绘制直线的实例代码
Jul 04 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学习之php4与php5之间会穿梭一点点感悟
2007/05/03 PHP
php提示无法加载或mcrypt没有找到 PHP 扩展 mbstring解决办法
2012/03/27 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
PHP实现Unicode编码相互转换的方法示例
2020/11/17 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
用js得到网页中所有的div的id
2020/10/19 Javascript
提高 DHTML 页面性能
2006/12/25 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
输入自动提示搜索提示功能的javascript:sugggestion.js
2013/09/02 Javascript
JS 打印功能代码可实现打印预览、打印设置等
2014/10/31 Javascript
javascript中递归函数用法注意点
2015/07/30 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
聊一聊JS中的prototype
2016/09/29 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
JS实现一个简单的日历
2017/02/22 Javascript
元素全屏的设置与监听实例
2017/11/28 Javascript
Node.js readline模块与util模块的使用
2018/03/01 Javascript
Vue 重置组件到初始状态的方法示例
2018/10/10 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
解决VUE项目使用Element-ui 下拉组件的验证失效问题
2020/11/07 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
Python 元组(Tuple)操作详解
2014/03/11 Python
python实现机械分词之逆向最大匹配算法代码示例
2017/12/13 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
2018/05/10 Python
python3通过subprocess模块调用脚本并和脚本交互的操作
2020/12/05 Python
Rockport乐步美国官网:风靡美国的白宫鞋
2016/11/24 全球购物
英语教师岗位职责
2014/03/16 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
行政撤诉申请书
2015/05/18 职场文书
新郎新娘致辞
2015/07/31 职场文书
个人业务学习心得体会
2016/01/25 职场文书