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 相关文章推荐
以一段代码为实例快速入门Python2.7
Mar 31 Python
python实现决策树分类算法
Dec 21 Python
python selenium UI自动化解决验证码的4种方法
Jan 05 Python
python如何实现内容写在图片上
Mar 23 Python
Python实现修改文件内容的方法分析
Mar 25 Python
对Python Class之间函数的调用关系详解
Jan 23 Python
python简单贪吃蛇开发
Jan 28 Python
深入浅析Python科学计算库Scipy及安装步骤
Oct 12 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
python脚本实现mp4中的音频提取并保存在原目录
Feb 27 Python
python操作ini类型配置文件的实例教程
Oct 30 Python
Python Process创建进程的2种方法详解
Jan 25 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登录环节防止sql注入的方法浅析
2014/06/30 PHP
php实现给二维数组中所有一维数组添加值的方法
2017/02/04 PHP
PHP简单实现二维数组赋值与遍历功能示例
2017/10/19 PHP
jQuery UI Dialog 创建友好的弹出对话框实现代码
2012/04/12 Javascript
基于JavaScript 下namespace 功能的简单分析
2013/07/05 Javascript
使用JS CSS去除IE链接虚线框的三种方法
2013/11/14 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
Javascript技术栈中的四种依赖注入小结
2016/02/27 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
利用n工具轻松管理Node.js的版本
2017/04/21 Javascript
JS实现带动画的回到顶部效果
2017/12/28 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
深入浅析golang zap 日志库使用(含文件切割、分级别存储和全局使用等)
2020/02/19 Javascript
详解Vue的七种传值方式
2021/02/08 Vue.js
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Python中常用信号signal类型实例
2018/01/25 Python
selenium在执行phantomjs的API并获取执行结果的方法
2018/12/17 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
matplotlib绘制多个子图(subplot)的方法
2019/12/03 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
福克斯租车:Fox Rent A Car
2017/04/13 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
网络体系结构及协议的定义
2014/03/13 面试题
可靠的数据流传输TCP
2016/03/15 面试题
销售求职信范文
2014/05/26 职场文书
小学数学教研活动总结
2014/07/01 职场文书
结婚喜宴祝酒词
2015/08/10 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP
浅析python中特殊文件和特殊函数
2022/02/24 Python