Python用zip函数同时遍历多个迭代器示例详解


Posted in Python onNovember 14, 2016

前言

本文主要介绍的是Python如何使用zip函数同时遍历多个迭代器,文中的版本为Python3,zip函数是Python内置的函数。下面话不多说,来看详细的内容。

应用举例

>>> list1 = ['a', 'b', 'c', 'd']
>>> list2 = ['apple', 'boy', 'cat', 'dog']
>>> for x, y in zip(list1, list2):
  print(x, 'is', y)
# 输出
a is apple
b is boy
c is cat
d is dog

这样就很简洁地实现了同时遍历两个列表,very pythonic!!!

原理说明

Python3中的zip函数可以把两个或者两个以上的迭代器封装成生成器,这种zip生成器会从每个迭代器中获取该迭代器的下一个值,然后把这些值组装成元组(tuple)。这样,zip函数就实现了平行地遍历多个迭代器。

注意

如果输入的迭代器长度不同,那么,只要有一个迭代器遍历完,zip就不再产生元组了,zip会提前终止,这可能导致意外的结果,不可不察。如果不能确定zip所封装的列表是否等长,可以改用 itertools 内置模块中的zip_longest 函数,这个函数不在乎它们的长度是否相等。

在Python2中,zip不是生成器,它平行地遍历这些迭代器,组装元组,并把这些元组所构成的列表一次性完整地返回,这可能会占用大量内存并导致程序崩溃,如果在Python2中要遍历数据量大的迭代器,推荐使用 itertools 内置模块中的 izip 函数。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Python 相关文章推荐
Python实现的一个自动售饮料程序代码分享
Aug 25 Python
跟老齐学Python之关于循环的小伎俩
Oct 02 Python
Python中3种内建数据结构:列表、元组和字典
Nov 30 Python
Python第三方库的安装方法总结
Jun 06 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
Python装饰器实现几类验证功能做法实例
May 18 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
Python+matplotlib实现华丽的文本框演示代码
Jan 22 Python
python将一组数分成每3个一组的实例
Nov 14 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
Mar 20 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
Python端口扫描简单程序
Nov 10 #Python
Python迭代和迭代器详解
Nov 10 #Python
python通过cookie模拟已登录状态的初步研究
Nov 09 #Python
Python内置函数OCT详解
Nov 09 #Python
windows10系统中安装python3.x+scrapy教程
Nov 08 #Python
简单谈谈python中的多进程
Nov 06 #Python
python自带的http模块详解
Nov 06 #Python
You might like
PHP __autoload()方法真的影响性能吗?
2012/03/30 PHP
php实现的DateDiff和DateAdd时间函数代码分享
2014/08/16 PHP
什么情况下可以不写PHP的闭合标签“?>”
2014/08/28 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
用js实现的抽象CSS圆角效果!!
2007/05/03 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
判断及设置浏览器全屏模式
2014/04/20 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
js对象的复制继承实例
2015/01/10 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
2017/08/14 Javascript
JS实现全屏预览F11功能的示例代码
2018/07/23 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
Vue监听页面刷新和关闭功能
2019/06/20 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
Python使用cookielib模块操作cookie的实例教程
2016/07/12 Python
python中logging包的使用总结
2018/02/28 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
pyshp创建shp点文件的方法
2018/12/31 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
python通过对字典的排序,对json字段进行排序的实例
2020/02/27 Python
实习教师个人的自我评价
2013/11/08 职场文书
11月红领巾广播稿
2014/01/17 职场文书
模范家庭事迹材料
2014/02/10 职场文书
2015年员工试用期工作总结
2015/05/28 职场文书
篮球赛闭幕式主持词
2015/07/03 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
Nginx解决403 forbidden的完整步骤
2021/04/01 Servers
SpringBoot整合Minio文件存储
2022/04/03 Java/Android