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基础教程之循环介绍
Aug 29 Python
python中threading超线程用法实例分析
May 16 Python
python常用知识梳理(必看篇)
Mar 23 Python
详解Python之数据序列化(json、pickle、shelve)
Mar 30 Python
python数据结构链表之单向链表(实例讲解)
Jul 25 Python
Python爬虫实现百度图片自动下载
Feb 04 Python
python实现requests发送/上传多个文件的示例
Jun 04 Python
解决Python找不到ssl模块问题 No module named _ssl的方法
Apr 29 Python
OpenCV里的imshow()和Matplotlib.pyplot的imshow()的实现
Nov 25 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
python opencv实现图像配准与比较
Feb 09 Python
Python find()、rfind()方法及作用
Dec 24 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 return语句的另一个作用
2014/07/30 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
window.onbeforeunload方法在IE下无法正常工作的解决办法
2010/01/23 Javascript
js正则表达式中test,exec,match方法的区别说明
2014/01/29 Javascript
Jquery实现遮罩层的方法
2015/06/08 Javascript
PHP结合jQuery实现的评论顶、踩功能
2015/07/22 Javascript
Bootstrap Table使用心得总结
2016/11/29 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
python中lambda函数 list comprehension 和 zip函数使用指南
2014/09/28 Python
解决python升级引起的pip执行错误的问题
2018/06/12 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
Django rest framework jwt的使用方法详解
2019/08/08 Python
Python3多线程版TCP端口扫描器
2019/08/31 Python
Python加密模块的hashlib,hmac模块使用解析
2020/01/02 Python
django有外键关系的两张表如何相互查找
2020/02/10 Python
python 实现波浪滤镜特效
2020/12/02 Python
pandas针对excel处理的实现
2021/01/15 Python
巴西最大的在线约会网站:ParPerfeito
2018/07/11 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
Internal修饰符有什么含义
2013/07/10 面试题
会计与出纳自荐书范文
2014/03/16 职场文书
初一学生评语大全
2014/04/24 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2014年污水处理厂工作总结
2014/12/19 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
药房管理制度范本
2015/08/06 职场文书
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android