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使用scrapy解析js示例
Jan 23 Python
Python中声明只包含一个元素的元组数据方法
Aug 25 Python
pymongo为mongodb数据库添加索引的方法
May 11 Python
Python之自动获取公网IP的实例讲解
Oct 01 Python
Django中使用celery完成异步任务的示例代码
Jan 23 Python
Python格式化日期时间操作示例
Jun 28 Python
Python简易计算器制作方法代码详解
Oct 31 Python
Python 爬虫实现增加播客访问量的方法实现
Oct 31 Python
Python字典底层实现原理详解
Dec 18 Python
Python3 实现爬取网站下所有URL方式
Jan 16 Python
Python3创建Django项目的几种方法(3种)
Jun 03 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 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修改NetBeans默认字体的大小
2013/07/02 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
Yii实现文章列表置顶功能示例
2016/10/18 PHP
PHP laravel中的多对多关系实例详解
2017/06/07 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
小议javascript 设计模式 推荐
2009/10/28 Javascript
node.js中的fs.writeFileSync方法使用说明
2014/12/14 Javascript
JS实现点击文字对应DIV层不停闪动效果的方法
2015/03/02 Javascript
轻松掌握JavaScript中的Math object数学对象
2016/05/26 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
JavaScript生成随机验证码代码实例
2019/09/28 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
vue3.0中友好使用antdv示例详解
2021/01/05 Vue.js
[01:02:32]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第二场 2月26日
2021/03/11 DOTA
python 正则式使用心得
2009/05/07 Python
python提取包含关键字的整行数据方法
2018/12/11 Python
python统计字符的个数代码实例
2020/02/07 Python
python访问hdfs的操作
2020/06/06 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
CSS3实现滚动条动画效果代码分享
2016/08/03 HTML / CSS
巧克力领导品牌瑞士莲美国官网:Lindt Chocolate美国
2016/08/25 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
ORACLE十问
2015/04/20 面试题
企业总经理岗位职责
2014/02/13 职场文书
植物生产学专业求职信
2014/08/08 职场文书
2014年变电站工作总结
2014/12/19 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
Python3 如何开启自带http服务
2021/05/18 Python
weblogic服务建立数据源连接测试更新mysql驱动包的问题及解决方法
2022/01/22 MySQL