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 相关文章推荐
Eclipse + Python 的安装与配置流程
Mar 05 Python
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
python正则实现提取电话功能
Feb 24 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
pip命令无法使用的解决方法
Jun 12 Python
Python实现多进程的四种方式
Feb 22 Python
python爬虫爬取微博评论案例详解
Mar 27 Python
Python学习笔记之自定义函数用法详解
Jun 08 Python
python爬虫 execjs安装配置及使用
Jul 30 Python
python实现对变位词的判断方法
Apr 05 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 Python
Python anaconda安装库命令详解
Oct 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中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
深入php 正则表达式的学习探讨
2013/06/06 PHP
PHP中file_exists函数不支持中文名的解决方法
2014/07/26 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
JavaScript回调(callback)函数概念自我理解及示例
2013/07/04 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
深入浅析Node.js 事件循环
2015/12/20 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
详解如何将 Vue-cli 改造成支持多页面的 history 模式
2017/11/20 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
微信小程序公用参数与公用方法用法示例
2019/01/09 Javascript
ES6中异步对象Promise用法详解
2019/07/31 Javascript
webpack3.0升级4.0的方法步骤
2020/04/02 Javascript
Python BeautifulSoup中文乱码问题的2种解决方法
2014/04/22 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
python如何在列表、字典中筛选数据
2018/03/19 Python
在cmd命令行里进入和退出Python程序的方法
2018/05/12 Python
Python使用ctypes调用C/C++的方法
2019/01/29 Python
Python集中化管理平台Ansible介绍与YAML简介
2019/06/12 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
美国婚礼礼品网站:MyWeddingFavors
2018/09/26 全球购物
Martinelli官方商店:西班牙皮鞋和高跟鞋品牌
2019/07/30 全球购物
如何理解委托
2012/01/06 面试题
电子商务应届生求职信
2013/11/16 职场文书
车间副主任岗位职责
2013/12/24 职场文书
管理标语大全
2014/06/24 职场文书
师德师风自查材料
2014/10/14 职场文书
个人欠条范本
2015/07/03 职场文书
推普标语口号大全
2015/12/26 职场文书
Python 解决空列表.append() 输出为None的问题
2021/05/23 Python