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 相关文章推荐
python3.0 字典key排序
Dec 24 Python
Python中if __name__ == "__main__"详细解释
Oct 21 Python
Python求解平方根的方法
Mar 11 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
python 2.6.6升级到python 2.7.x版本的方法
Oct 09 Python
Python递归实现汉诺塔算法示例
Mar 19 Python
padas 生成excel 增加sheet表的实例
Dec 11 Python
Python Django Vue 项目创建过程详解
Jul 29 Python
如何查看Django ORM执行的SQL语句的实现
Apr 20 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
Python函数__new__及__init__作用及区别解析
Aug 31 Python
Python爬虫逆向分析某云音乐加密参数的实例分析
Dec 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实现大数(浮点数)取余的方法
2017/02/18 PHP
laravel 关联关系遍历数组的例子
2019/10/10 PHP
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
JQuery+EasyUI轻松实现步骤条效果
2016/02/22 Javascript
原生js封装的一些jquery方法(详解)
2016/09/20 Javascript
js闭包用法实例详解
2016/12/13 Javascript
纯JS实现弹性导航条效果
2017/03/06 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
2017/12/18 Javascript
如何在Vue.js中实现标签页组件详解
2019/01/02 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
Node如何后台数据库使用增删改查功能
2019/11/21 Javascript
[52:06]完美世界DOTA2联赛决赛日 Inki vs LBZS 第一场 11.08
2020/11/10 DOTA
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
python的unittest测试类代码实例
2017/12/07 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
简单了解为什么python函数后有多个括号
2019/12/19 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
django rest framework 自定义返回方式
2020/07/12 Python
python线程里哪种模块比较适合
2020/08/02 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
某科技软件测试面试题
2013/05/19 面试题
工作求职自荐信
2014/06/13 职场文书
社区灵活就业证明
2014/11/03 职场文书
医院营销工作计划
2015/01/16 职场文书
会计人员岗位职责
2015/02/03 职场文书
鲁迅故里导游词
2015/02/05 职场文书
工程部主管岗位职责
2015/02/12 职场文书
2015年会计个人工作总结
2015/04/02 职场文书
Python time库的时间时钟处理
2021/05/02 Python