原文地址:https://peps.python.org/pep-0201/
PDF 地址:
什么是同步迭代
同步迭代就是用 for 一次循环多个序列。
类似于这样的东西:
arr1 = [1, 2, 3, 4]
arr2 = ['a', 'b', 'c', 'd']
for a, b in arr1, arr2:
print(a, b)
使用 map 实现
for a, b in map(lambda x, y: (x, y), arr1, arr2):
print(a, b)
原文为 Python 2,实现如下:
for a, b in map(None, arr1, arr2): print(a, b)
Python 3
map
函数的第一个参数不能为None
了。
使用新函数 zip 实现
使用 map
不方便,最明显的一点就是每次都要自己写一个 lambda
才行。
为了更方便地实现同步迭代,PEP 201 提出了一个新函数 zip
来实现这个功能。
for a, b in zip(arr1, arr2):
print(a, b)
zip 函数的其他用途
转置表格
例如
data = [
['id', 'name', 'income'],
['1', 'John', 200],
['2', 'Jane', 300],
['3', 'Joe', 100],
['4', 'Jill', 400],
['5', 'Jim', 230],
]
print(list(zip(*data)))
( *data
相当于 zip(data[0], data[1], ..., data[n-1])
)zip()
函数在 Python 2 中返回的是 list
;在 Python 3 中返回的是迭代器,如果要输出展示,要先转换为 list
。
得到结果
[('id', '1', '2', '3', '4', '5'), ('name', 'John', 'Jane', 'Joe', 'Jill', 'Jim'), ('income', 200, 300, 100, 400, 230)]
很轻松就把行转成了列。
还可以利用 zip()
计算平均收入:文章来源:https://www.toymoban.com/news/detail-674363.html
income_list = list(zip(*data[1:]))[2]
print('average income: ', sum(income_list) / len(income_list))
data[1:]
这里切片是为了去除表格第一行的标题。然后 [2]
是因为收入是表格的第三列。文章来源地址https://www.toymoban.com/news/detail-674363.html
到了这里,关于【Python PEP 笔记】201 - 同步迭代 / zip() 函数的使用方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!