原文地址:https://peps.python.org/pep-0201/
PDF 地址:
什么是同步迭代
同步迭代就是用 for 一次循環(huán)多個序列。
類似于這樣的東西:
arr1 = [1, 2, 3, 4]
arr2 = ['a', 'b', 'c', 'd']
for a, b in arr1, arr2:
print(a, b)
使用 map 實現(xiàn)
for a, b in map(lambda x, y: (x, y), arr1, arr2):
print(a, b)
原文為 Python 2,實現(xiàn)如下:
for a, b in map(None, arr1, arr2): print(a, b)
Python 3
map
函數(shù)的第一個參數(shù)不能為None
了。
使用新函數(shù) zip 實現(xiàn)
使用 map
不方便,最明顯的一點就是每次都要自己寫一個 lambda
才行。
為了更方便地實現(xiàn)同步迭代,PEP 201 提出了一個新函數(shù) zip
來實現(xiàn)這個功能。
for a, b in zip(arr1, arr2):
print(a, b)
zip 函數(shù)的其他用途
轉(zhuǎn)置表格
例如
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()
函數(shù)在 Python 2 中返回的是 list
;在 Python 3 中返回的是迭代器,如果要輸出展示,要先轉(zhuǎn)換為 list
。
得到結(jié)果
[('id', '1', '2', '3', '4', '5'), ('name', 'John', 'Jane', 'Joe', 'Jill', 'Jim'), ('income', 200, 300, 100, 400, 230)]
很輕松就把行轉(zhuǎn)成了列。
還可以利用 zip()
計算平均收入:文章來源:http://www.zghlxwxcb.cn/news/detail-674363.html
income_list = list(zip(*data[1:]))[2]
print('average income: ', sum(income_list) / len(income_list))
data[1:]
這里切片是為了去除表格第一行的標題。然后 [2]
是因為收入是表格的第三列。文章來源地址http://www.zghlxwxcb.cn/news/detail-674363.html
到了這里,關(guān)于【Python PEP 筆記】201 - 同步迭代 / zip() 函數(shù)的使用方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!