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继承和抽象类的实现方法
Jan 14 Python
Python实现破解猜数游戏算法示例
Sep 25 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
Apr 02 Python
用pandas按列合并两个文件的实例
Apr 12 Python
基于python绘制科赫雪花
Jun 22 Python
pyspark.sql.DataFrame与pandas.DataFrame之间的相互转换实例
Aug 02 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
Python函数中参数是传递值还是引用详解
Jul 02 Python
Python产生一个数值范围内的不重复的随机数的实现方法
Aug 21 Python
python 密码学示例——凯撒密码的实现
Sep 21 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
Oct 15 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
Mar 02 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
PHP3 safe_mode 失效漏洞
2006/10/09 PHP
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
Laravel模糊查询区分大小写的实例
2019/09/29 PHP
php 命名空间(namespace)原理与用法实例小结
2019/11/13 PHP
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
js清理Word格式示例代码
2014/02/13 Javascript
JSONP之我见
2015/03/24 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
2015/12/03 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
jQuery实现遍历复选框的方法示例
2017/03/06 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
随机生成10个不重复的0-100的数字(实例讲解)
2017/08/16 Javascript
浅谈vuex之mutation和action的基本使用
2017/08/29 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
如何让微信小程序页面之间的通信不再变困难
2019/06/03 Javascript
将图片文件嵌入到wxpython代码中的实现方法
2014/08/11 Python
Python跳出循环语句continue与break的区别
2014/08/25 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
Python中static相关知识小结
2018/01/02 Python
python实现Windows电脑定时关机
2018/06/20 Python
python中的字符串内部换行方法
2018/07/19 Python
如何解决cmd运行python提示不是内部命令
2020/07/01 Python
Python描述数据结构学习之哈夫曼树篇
2020/09/07 Python
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
博士生入学考试推荐信
2013/11/17 职场文书
大学学雷锋活动总结
2014/06/26 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
MySQL新手入门进阶语句汇总
2022/09/23 MySQL
Java中的Kafka为什么性能这么快及4大核心详析
2022/09/23 Java/Android