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中的Django框架中prefetch_related()函数对数据库查询的优化
Apr 01 Python
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
Python实现处理管道的方法
Jun 04 Python
python中Matplotlib实现绘制3D图的示例代码
Sep 04 Python
使用Django连接Mysql数据库步骤
Jan 15 Python
Python基于滑动平均思想实现缺失数据填充的方法
Feb 21 Python
Python实现简单层次聚类算法以及可视化
Mar 18 Python
python GUI库图形界面开发之PyQt5信号与槽事件处理机制详细介绍与实例解析
Mar 08 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
python中子类与父类的关系基础知识点
Feb 02 Python
Python用requests库爬取返回为空的解决办法
Feb 21 Python
Python将CSV文件转化为HTML文件的操作方法
Jun 30 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模拟HTTP认证
2006/10/09 PHP
用php获取本周,上周,本月,上月,本季度日期的代码
2009/08/05 PHP
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
PHP中对用户身份认证实现两种方法
2011/06/04 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
php之可变函数的实例详解
2017/09/13 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
PHP实现的简单留言板功能示例【基于thinkPHP框架】
2018/12/07 PHP
JS实现可改变列宽的table实例
2013/07/02 Javascript
jQuery实现页面点击后退弹出提示框的方法
2016/08/24 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
javascript循环链表之约瑟夫环的实现方法
2017/01/16 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
使用veloticy-ui生成文字动画效果
2018/02/08 Javascript
json数据传到前台并解析展示成列表的方法
2018/08/06 Javascript
html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片
2020/01/12 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
详解JS预解析原理
2020/06/16 Javascript
浅析Python 中整型对象存储的位置
2016/05/16 Python
python re模块findall()函数实例解析
2018/01/19 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
解决nohup执行python程序log文件写入不及时的问题
2019/01/14 Python
关于pycharm中pip版本10.0无法使用的解决办法
2019/10/10 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
使用Python爬取小姐姐图片(beautifulsoup法)
2021/02/11 Python
HTML5标签与HTML4标签的区别示例介绍
2013/07/18 HTML / CSS
html+js 实现markdown编辑器效果
2019/10/23 HTML / CSS
服务生自我鉴定
2014/01/22 职场文书
奥巴马竞选演讲稿
2014/05/15 职场文书
小学运动会口号
2014/06/07 职场文书
2014法院四风问题对照检查材料思想汇报
2014/10/04 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
四风之害观后感
2015/06/09 职场文书
创业计划书之小型广告公司
2019/10/22 职场文书