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多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
python获得文件创建时间和修改时间的方法
Jun 30 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
Feb 19 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
Python实现简单网页图片抓取完整代码实例
Dec 15 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
使用Eclipse如何开发python脚本
Apr 11 Python
django允许外部访问的实例讲解
May 14 Python
详解Python3迁移接口变化采坑记
Oct 11 Python
Keras-多输入多输出实例(多任务)
Jun 22 Python
pytorch 一行代码查看网络参数总量的实现
May 12 Python
利用Python实现Picgo图床工具
Nov 23 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中mysql连接方式PDO使用详解
2015/02/25 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
php die()与exit()的区别实例详解
2016/12/03 PHP
自己写的Javascript计算时间差函数
2013/10/28 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
JS获取随机数函数可自定义最小值最大值
2014/05/08 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
js自定义Tab选项卡效果
2017/06/05 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
Angular2 http jsonp的实例详解
2017/08/31 Javascript
webpack配置之后端渲染详解
2017/10/26 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
javascript少儿编程关于返回值的函数内容
2018/05/27 Javascript
vue中引用swiper轮播插件的教程详解
2018/08/16 Javascript
JavaScript常用数组操作方法,包含ES6方法
2020/05/10 Javascript
Vue开发之watch监听数组、对象、变量操作分析
2019/04/25 Javascript
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
[01:21]2018DOTA2亚洲邀请赛4.5采访 打DOTA2也能有女朋友?
2018/04/06 DOTA
python学习必备知识汇总
2017/09/08 Python
python读写LMDB文件的方法
2018/07/02 Python
使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件及出现问题解决方法
2019/09/06 Python
python中通过selenium简单操作及元素定位知识点总结
2019/09/10 Python
python中Lambda表达式详解
2019/11/20 Python
Python生成器常见问题及解决方案
2020/03/21 Python
微信小程序实现可实时改变转速的css3旋转动画实例代码
2018/09/11 HTML / CSS
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
十佳班主任事迹材料
2014/01/18 职场文书
《雪地里的小画家》教学反思
2014/02/22 职场文书
医院合作协议书
2014/08/19 职场文书
将图片保存到mysql数据库并展示在前端页面的实现代码
2021/05/02 MySQL
MSSQL基本语法操作
2022/04/11 SQL Server