python中並行遍歷 zip和map 轉

2021-09-06 12:43:45 字數 1622 閱讀 9978

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...