python中並行遍歷 zip和map 轉

2021-09-23 19:50:11 字數 1395 閱讀 9526

1、並行遍歷:zip和map

內建的zip函式可以讓我們使用for迴圈來並行使用多個序列。在基本運算中,zip會取得乙個或多個序列為引數,然後返回元組的列表,將這些序列中的併排的元素配成對。

示例一:

l1 = [1,2,3,4]

l2 = [5,6,7,8]

要合併這些列表中的元素,可以使用zip來建立乙個元組對的列表。與range一樣,zip是乙個可迭代物件,因此,必須將其包含在乙個list呼叫中一邊一次性顯示所有結果。

zip(l1,l2)

list(zip(l1,l2))

!注釋掉這一行,執行結果依然如次

for (x,y) in zip(l1,l2):

print(x,'+',y,'=',x + y)

執行結果為:

1 + 5 = 6

2 + 6 = 8

3 + 7 = 10

4 + 8 = 12

示例二:

l1 = [1,2,3,4]

l2 = [5,6,7,8]

l3 = [9,10,11,12]

zip(l1,l2,l3)

list(zip(l1,l2,l3))

for (x,y,z) in zip(l1,l2,l3):

print(x,'+',y,'+',z,'=',x + y + z)

結果為:

1 + 5 + 9 = 15

2 + 6 + 10 = 18

3 + 7 + 11 = 21

4 + 8 + 12 = 24

嚴格來講,zip比這個例子更一般化。可以有接受任何型別的序列(就是任何可迭代的物件,包括檔案),可以有兩個以上的引數。當引數長度不同時,zip會以最短序列的長度為準來截斷所得到的的元組。

在python 2.x中,相關的內建map函式,用類似方式把序列的元素配對起來,但是如果引數長度不同,則會為較短的序列用none補齊。而python3不再支援該函式。一般來講,map會帶乙個函式,以及乙個或多個的序列引數,然後用從序列中取出的並行元素呼叫函式的結果收集起來。

使用zip構造字典,非常方便。

示例:

keys = ['spam','eggs','toast']

vals = [1,3,5]

list(zip(keys,vals))

d2 = {}

for (k,v) in zip(keys,vals):

d2[k] = v

print(d2)

執行結果為:

在python2.2和後續版本中,可以完全跳過for迴圈,直接把zip過的健/值列表傳給內建的dict建構函式,以上劃線部分可以換做d3 = dict(zip(keys,vals))。

內建變數名dict其實是python中的型別名稱。

python中並行遍歷 zip和map 轉

1 並行遍歷 zip 和map 內建的zip 函式可以讓我們使用 for迴圈來並行使用多個序列。在基本運算中,zip會取得乙個或多個序列為引數,然後返回元組的列表,將這些序列中的併排的元素配成對。示例一 l1 1,2,3,4 l2 5,6,7,8 要合併這些列表中的元素,可以使用zip 來建立乙個元...

python 同時遍歷 python中的並行遍歷

其實並行遍歷是啥意思?就是將二維陣列中的值同時取出來 例如有乙個二維陣列 1,2,3 4,5,6 我想成對取出來,其中的元素,結果就是 1,4 2,5 3,6 這種模式就需要下面的並行遍歷方法。1 並行遍歷 zip和map 內建的zip函式可以讓我們使用for迴圈來並行使用多個序列。在基本運算中,z...

53 Python 使用zip 並行迭代

目錄 使用zip 並行迭代 我們可以通過zip 函式對多個序列進行並行迭代,zip 函式在最短序列 用完 時就會停止 測試zip 並行迭代 names 小明 小紅 小王 小李 ages 20,18,18 zip 函式在最短序列 用完 時就會停止,它最短 jobs 學生 教師 隔壁 果農 for na...