Python同时迭代多个序列的方法


Posted in Python onJuly 28, 2020

问题

你想同时迭代多个序列,每次分别从一个序列中取一个元素。

解决方案

为了同时迭代多个序列,使用 zip() 函数。比如:

>>> xpts = [1, 5, 4, 2, 10, 7]
>>> ypts = [101, 78, 37, 15, 62, 99]
>>> for x, y in zip(xpts, ypts):
...   print(x,y)
...
1 101
5 78
4 37
2 15
10 62
7 99
>>>

zip(a, b) 会生成一个可返回元组 (x, y) 的迭代器,其中x来自a,y来自b。一旦其中某个序列到底结尾,迭代宣告结束。因此迭代长度跟参数中最短序列长度一致。

>>> a = [1, 2, 3]
>>> b = ['w', 'x', 'y', 'z']
>>> for i in zip(a,b):
...   print(i)
...
(1, 'w')
(2, 'x')
(3, 'y')
>>>

如果这个不是你想要的效果,那么还可以使用 itertools.zip_longest() 函数来代替。比如:

>>> from itertools import zip_longest
>>> for i in zip_longest(a,b):
...   print(i)
...
(1, 'w')
(2, 'x')
(3, 'y')
(None, 'z')
>>> for i in zip_longest(a, b, fillvalue=0):
...   print(i)
...
(1, 'w')
(2, 'x')
(3, 'y')
(0, 'z')
>>>

讨论

当你想成对处理数据的时候 zip() 函数是很有用的。比如,假设你头列表和一个值列表,就像下面这样:

headers = ['name', 'shares', 'price']
values = ['ACME', 100, 490.1]

使用zip()可以让你将它们打包并生成一个字典:

s = dict(zip(headers,values))

或者你也可以像下面这样产生输出:

for name, val in zip(headers, values):
  print(name, '=', val)

虽然不常见,但是 zip() 可以接受多于两个的序列的参数。这时候所生成的结果元组中元素个数跟输入序列个数一样。比如;

>>> a = [1, 2, 3]
>>> b = [10, 11, 12]
>>> c = ['x','y','z']
>>> for i in zip(a, b, c):
...   print(i)
...
(1, 10, 'x')
(2, 11, 'y')
(3, 12, 'z')
>>>

最后强调一点就是,zip() 会创建一个迭代器来作为结果返回。如果你需要将结对的值存储在列表中,要使用 list() 函数。比如:

>>> zip(a, b)
<zip object at 0x1007001b8>
>>> list(zip(a, b))
[(1, 10), (2, 11), (3, 12)]
>>>

以上就是Python同时迭代多个序列的方法的详细内容,更多关于Python同时迭代多个序列的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
由Python运算π的值深入Python中科学计算的实现
Apr 17 Python
linux下python抓屏实现方法
May 22 Python
python 写入csv乱码问题解决方法
Oct 23 Python
python去除字符串中的换行符
Oct 11 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
对python添加模块路径的三种方法总结
Oct 16 Python
浅谈python中str字符串和unicode对象字符串的拼接问题
Dec 04 Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
Apr 07 Python
最简单的matplotlib安装教程(小白)
Jul 28 Python
python 两种方法删除空文件夹
Sep 29 Python
Python如何读取、写入JSON数据
Jul 28 #Python
python3.6中anaconda安装sklearn踩坑实录
Jul 28 #Python
Python基于xlutils修改表格内容过程解析
Jul 28 #Python
Python如何读取、写入CSV数据
Jul 28 #Python
PyQt中使用QtSql连接MySql数据库的方法
Jul 28 #Python
pycharm全局搜索的具体步骤
Jul 28 #Python
Django model重写save方法及update踩坑详解
Jul 27 #Python
You might like
什么是调频(FM)、调幅(AM)、短波(SW)、长波(LW)
2021/03/01 无线电
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
joomla实现注册用户添加新字段的方法
2016/05/05 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
极酷的javascirpt,让你随意编辑任何网页
2007/02/25 Javascript
学习ExtJS accordion布局
2009/10/08 Javascript
javaScript让文本框内的最后一个文字的后面获得焦点实现代码
2013/01/06 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
使用JS画图之点、线、面
2015/01/12 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
angular仿支付宝密码框输入效果
2017/03/25 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
Vue结合Video.js播放m3u8视频流的方法示例
2018/05/04 Javascript
关于vue-cli3打包代码后白屏的解决方案
2020/09/02 Javascript
跟老齐学Python之网站的结构
2014/10/24 Python
python使用win32com库播放mp3文件的方法
2015/05/30 Python
详解python 发送邮件实例代码
2016/12/22 Python
举例讲解Python常用模块
2019/03/08 Python
python3将变量写入SQL语句的实现方式
2020/03/02 Python
Python爬虫:Request Payload和Form Data的简单区别说明
2020/04/30 Python
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
彪马英国官网:PUMA英国
2019/02/11 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
Stührling手表官方网站:男女高品质时尚手表的领先零售商
2021/01/07 全球购物
前台领班岗位职责
2013/12/04 职场文书
搬家公司的创业计划书
2014/01/01 职场文书
思想汇报格式
2014/01/05 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
班级年度安全计划书
2014/05/01 职场文书
党员个人对照检查材料
2014/10/01 职场文书
英文辞职信范文
2015/05/13 职场文书
《正比例》教学反思
2016/02/23 职场文书
Golang标准库syscall详解(什么是系统调用)
2021/05/25 Golang
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL
Java 使用类型为Object的变量指向任意类型的对象
2022/04/13 Java/Android