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 相关文章推荐
Python3.x和Python2.x的区别介绍
Feb 12 Python
python网络编程学习笔记(一)
Jun 09 Python
使用Python的Zato发送AMQP消息的教程
Apr 16 Python
Python数据类型学习笔记
Jan 13 Python
巧用python和libnmapd,提取Nmap扫描结果
Aug 23 Python
python求质数的3种方法
Sep 28 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
Dec 04 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
pycharm部署、配置anaconda环境的教程
Mar 24 Python
Pyspark读取parquet数据过程解析
Mar 27 Python
解决paramiko执行命令超时的问题
Apr 16 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 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
php设计模式 Composite (组合模式)
2011/06/26 PHP
PHP关于htmlspecialchars、strip_tags、addslashes的解释
2014/07/04 PHP
Yii2.0多文件上传实例说明
2017/07/24 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
全面解析JavaScript中“&amp;&amp;”和“||”操作符(总结篇)
2016/07/18 Javascript
canvas雪花效果核心代码分享
2017/02/19 Javascript
js实现拖拽功能
2017/03/01 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
js链表操作(实例讲解)
2017/08/29 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
java实现单链表增删改查的实例代码详解
2019/08/30 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
Python win32com 操作Exce的l简单方法(必看)
2017/05/25 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
python编程使用selenium模拟登陆淘宝实例代码
2018/01/25 Python
Python yield与实现方法代码分析
2018/02/06 Python
一百行python代码将图片转成字符画
2021/02/19 Python
快速排序的四种python实现(推荐)
2019/04/03 Python
pip安装python库的方法总结
2019/08/02 Python
Pyinstaller 打包发布经验总结
2020/06/02 Python
用Python 执行cmd命令
2020/12/18 Python
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
英国标准协会商店:BSI Shop
2019/02/25 全球购物
乌克兰在线电子产品商店:MTA
2019/11/14 全球购物
后勤副校长自我鉴定
2013/10/13 职场文书
医学院护理专业应届生求职信
2013/11/12 职场文书
公司年会策划方案
2014/05/17 职场文书
委托书的格式
2014/08/01 职场文书
协会周年庆活动方案
2014/08/26 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
党支部2014年度工作总结
2014/12/04 职场文书
租车协议书
2015/01/27 职场文书