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脚本将文字转换为图片的实例分享
Aug 29 Python
Python3多线程操作简单示例
May 22 Python
一行代码让 Python 的运行速度提高100倍
Oct 08 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
Django如何开发简单的查询接口详解
May 17 Python
Python Django 添加首页尾页上一页下一页代码实例
Aug 21 Python
详解Python3迁移接口变化采坑记
Oct 11 Python
python pygame实现挡板弹球游戏
Nov 25 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
通过Python实现一个简单的html页面
May 16 Python
python能自学吗
Jun 18 Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 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二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
请离开include_once和require_once
2013/07/18 PHP
php读取excel文件示例分享(更新修改excel)
2014/02/27 PHP
php中eval函数的危害与正确禁用方法
2014/06/30 PHP
php实现最简单的MVC框架实例教程
2014/09/08 PHP
PHP之uniqid()函数用法
2014/11/03 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
谈谈你对Zend SAPIs(Zend SAPI Internals)的理解
2015/11/10 PHP
php插入mysql数据返回id的方法
2018/05/31 PHP
PHP获取对象属性的三种方法实例分析
2019/01/03 PHP
ThinkPHP 5.1 跨域配置方法
2019/10/11 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
javascript中几个容易混淆的概念总结
2015/04/14 Javascript
JavaScript实现将UPC转换成ISBN的方法
2015/05/26 Javascript
Bootstrap CSS使用方法
2016/12/23 Javascript
JS实现放烟花效果
2020/03/10 Javascript
[00:21]DOTA2亚洲邀请赛 Logo演绎
2015/02/07 DOTA
Python中用于计算对数的log()方法
2015/05/15 Python
详解python时间模块中的datetime模块
2016/01/13 Python
Python实现的维尼吉亚密码算法示例
2018/04/12 Python
python中的常量和变量代码详解
2018/07/25 Python
Python:slice与indices的用法
2019/11/25 Python
如何基于python实现归一化处理
2020/01/20 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
Python新手学习raise用法
2020/06/03 Python
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
生物有机护肤品:Aurelia Probiotic Skincare
2018/01/31 全球购物
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
高校十八大报告感想
2014/01/27 职场文书
2014年清明节网上祭英烈寄语
2014/04/09 职场文书
蓬莱阁导游词
2015/02/04 职场文书
golang内置函数len的小技巧
2021/07/25 Golang
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis