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自动化工具日志查询分析脚本代码实现
Nov 26 Python
使用python编写脚本获取手机当前应用apk的信息
Jul 21 Python
Python中获取对象信息的方法
Apr 27 Python
Python中Django框架利用url来控制登录的方法
Jul 25 Python
python函数形参用法实例分析
Aug 04 Python
Python实现针对给定单链表删除指定节点的方法
Apr 12 Python
python Gunicorn服务器使用方法详解
Jul 22 Python
python多线程使用方法实例详解
Dec 30 Python
python文件及目录操作代码汇总
Jul 08 Python
Python tkinter制作单机五子棋游戏
Sep 14 Python
Python下使用Trackbar实现绘图板
Oct 27 Python
pycharm 实现调试窗口恢复
Feb 05 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/05/09 PHP
function foo的原型与prototype属性解惑
2010/11/19 Javascript
基于jQuery的360图片展示实现代码
2012/06/14 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
ECMAScript5中的对象存取器属性:getter和setter介绍
2014/12/08 Javascript
解决js页面滚动效果scrollTop在FireFox与Chrome浏览器间的兼容问题的方法
2015/12/03 Javascript
最全的Javascript编码规范(推荐)
2016/06/22 Javascript
AngularJS入门教程之路由与多视图详解
2016/08/19 Javascript
EasyUI 中combotree 默认不能选择父节点的实现方法
2016/11/07 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
jQuery扩展_动力节点Java学院整理
2017/07/05 jQuery
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
深入了解javascript 数组的sort方法
2018/06/01 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
基于jquery实现的tab选项卡功能示例【附源码下载】
2019/06/10 jQuery
微信小程序开发之转发分享功能
2019/10/22 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
[02:42]2014DOTA2国际邀请赛 三冰专访:我会打到Ti20
2014/07/13 DOTA
python实现猜数字游戏(无重复数字)示例分享
2014/03/29 Python
在MAC上搭建python数据分析开发环境
2016/01/26 Python
python list元素为tuple时的排序方法
2018/04/18 Python
Python使用itchat 功能分析微信好友性别和位置
2019/08/05 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
Jupyter 无法下载文件夹如何实现曲线救国
2020/04/22 Python
html5中如何将图片的绝对路径转换成文件对象
2018/01/11 HTML / CSS
linux面试题参考答案(10)
2016/10/26 面试题
员工年终演讲稿
2014/01/03 职场文书
个人担保书格式范文
2014/05/12 职场文书
党的群众路线教育实践活动领导班子整改措施
2014/09/30 职场文书
英文产品推荐信
2015/03/27 职场文书
入党申请书怎么写?
2019/06/11 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
SpringAop日志找不到方法的处理
2021/06/21 Java/Android