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实现生成随机数据插入mysql数据库的方法
Dec 25 Python
python表格存取的方法
Mar 07 Python
Python内置函数reversed()用法分析
Mar 20 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 Python
浅析Python四种数据类型
Sep 26 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
python用类实现文章敏感词的过滤方法示例
Oct 27 Python
python获取网络图片方法及整理过程详解
Dec 20 Python
TensorFlow实现从txt文件读取数据
Feb 05 Python
Python实现检测文件的MD5值来查找重复文件案例
Mar 12 Python
python 多线程共享全局变量的优劣
Sep 24 Python
TensorFlow中tf.batch_matmul()的用法
Jun 02 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
双料怀旧--SHARP GF515的维护、修理和简单调试
2021/03/02 无线电
一篇不错的PHP基础学习笔记
2007/03/18 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
Laravel 5 框架入门(三)
2015/04/09 PHP
Session 失效的原因汇总及解决丢失办法
2015/09/30 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
图片轮换效果实现代码(点击按钮停止执行)
2013/04/12 Javascript
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
Nodejs异步回调的优雅处理方法
2014/09/25 NodeJs
JQuery中基础过滤选择器用法实例分析
2015/05/18 Javascript
javascript实现的淘宝旅行通用日历组件用法实例
2015/08/03 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
学习Bootstrap滚动监听 附调用方法
2016/07/02 Javascript
jQuery Chosen通用初始化
2017/03/07 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
详解vue.js之绑定class和style的示例代码
2017/08/24 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
Python连接phoenix的方法示例
2017/09/29 Python
python flask搭建web应用教程
2019/11/19 Python
python科学计算之narray对象用法
2019/11/25 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
python实现猜单词游戏
2020/05/22 Python
python三引号如何输入
2020/07/06 Python
PHP笔试题
2012/02/22 面试题
《雾凇》教学反思
2014/02/17 职场文书
美容院营销方案
2014/03/05 职场文书
员工试用期考核自我鉴定
2014/04/13 职场文书
建筑安全标语
2014/06/07 职场文书
学雷锋献爱心活动总结
2015/05/11 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
Python装饰器详细介绍
2022/03/25 Python