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 文件与目录操作
Dec 24 Python
python str与repr的区别
Mar 23 Python
python和pyqt实现360的CLable控件
Feb 21 Python
Python中的异常处理相关语句基础学习笔记
Jul 11 Python
python 遍历列表提取下标和值的实例
Dec 25 Python
Python基于scipy实现信号滤波功能
May 08 Python
python类的实例化问题解决
Aug 31 Python
Django中的FBV和CBV用法详解
Sep 15 Python
Python 可变类型和不可变类型及引用过程解析
Sep 27 Python
使用python切片实现二维数组复制示例
Nov 26 Python
Python集合set()使用的方法详解
Mar 18 Python
Python加密技术之RSA加密解密的实现
Apr 08 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中利用str_pad函数生成数字递增形式的产品编号
2013/09/30 PHP
PHP解析目录路径的3个函数总结
2014/11/18 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
jquery text()要注意啦
2009/10/30 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
Ext GridPanel加载完数据后进行操作示例代码
2014/06/17 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
JS中捕获console.log()输出的方法
2015/04/16 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
客户端(vue框架)与服务器(koa框架)通信及服务器跨域配置详解
2017/08/26 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
浅谈vue,angular,react数据双向绑定原理分析
2017/11/28 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
Phaser.js实现简单的跑酷游戏附源码下载
2018/10/26 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
python 字符串split的用法分享
2013/03/23 Python
python实现颜色空间转换程序(Tkinter)
2015/12/31 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
基于Python实现拆分和合并GIF动态图
2019/10/22 Python
python文字转语音实现过程解析
2019/11/12 Python
Python字符串的修改方法实例
2019/12/19 Python
pyspark 随机森林的实现
2020/04/24 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
软件测试工程师面试问题精选
2016/10/28 面试题
班组长的岗位职责
2013/12/09 职场文书
《盘古开天地》教学反思
2014/02/28 职场文书
部门活动策划方案
2014/08/16 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
创业者如何撰写出一份打动投资人的商业计划书?
2019/07/02 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python