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从ftp下载数据保存实例
Nov 20 Python
python获取文件扩展名的方法
Jul 06 Python
举例讲解Python的lambda语句声明匿名函数的用法
Jul 01 Python
使用Python操作excel文件的实例代码
Oct 15 Python
Django后台获取前端post上传的文件方法
May 28 Python
详解配置Django的Celery异步之路踩坑
Nov 25 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
使用Python和Scribus创建一个RGB立方体的方法
Jul 17 Python
Django 实现前端图片压缩功能的方法
Aug 07 Python
Python中bisect的使用方法
Dec 31 Python
如何用tempfile库创建python进程中的临时文件
Jan 28 Python
Python+pyaudio实现音频控制示例详解
Jul 23 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中使用Imagick实现各种图片效果实例
2015/01/21 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
JS定义回车事件(实现代码)
2013/07/08 Javascript
MyEclipse取消验证Js的两种方法
2013/11/14 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
jquery实现简单的瀑布流布局
2016/12/11 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
vue兄弟组件传递数据的实例
2018/09/06 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
总结python实现父类调用两种方法的不同
2017/01/15 Python
Python 元类实例解析
2018/04/04 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
新版Pycharm中Matplotlib不会弹出独立的显示窗口的问题
2020/06/02 Python
Python爬虫之Selenium多窗口切换的实现
2020/12/04 Python
CSS3使用transition属性实现过渡效果
2018/04/18 HTML / CSS
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
阿尔卡特(中国)的面试题目
2014/08/20 面试题
优秀大学生推荐信范文
2013/11/28 职场文书
车间副主任岗位职责
2013/12/24 职场文书
医科大学毕业生自荐信
2014/02/03 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
小学关爱留守儿童活动方案
2014/08/25 职场文书
2014年实习班主任工作总结
2014/11/08 职场文书
介绍信的格式
2015/01/30 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
学生乘坐校车安全责任书
2015/05/11 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
写作技巧:优秀文案必备的3种结构
2019/08/19 职场文书
Python中Permission denied的解决方案
2021/04/02 Python
详解CSS中的特指度和层叠问题
2021/07/15 HTML / CSS