Python zip 函式用法詳解

2021-10-13 21:55:34 字數 2127 閱讀 5526

zip() 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。(注:在python3中返回的是zip物件)

zip的語法格式:

zip

(iterable,..

.)# 其中 iterable,... 表示多個列表、元組、字典、集合、字串,甚至還可以為 range() 區間。

下面演示一下zip的一些基本用法:

1、

list1 =[1

,2,3

,4,5

]list2 =[6

,7,8

,9,0

]print

([i for i in

zip(list1, list2)])

"""result:

[(1, 6), (2, 7), (3, 8), (4, 9), (5, 0)]

"""

從以上結果我們不難看出zip執行的基本方式

2、

list1 =[1

,2,3

,4]list2 =[6

,7,8

,9,0

]print

([i for i in

zip(list1, list2)])

"""[(1, 6), (2, 7), (3, 8), (4, 9)]

"""

從以上結果我們發現如果可迭代物件的長度不相同將按短的序列為準

3、

tuple1 =(1

,2,3

,4)dict1 =

dict2 =

print

([i for i in

zip(dict1)])

print

([i for i in

zip(tuple1, dict1)])

print

([i for i in

zip(tuple1, dict2)])

"""[('w',), ('e',), ('r',)]

[(1, 'w'), (2, 'e'), (3, 'r')]

[(1, 5), (2, 6), (3, 7)]

"""

從以上結果看出,只要是可迭代的物件皆可相互使用,比如zip(dict,list),而zip(dict)得到的只有key 沒有value

4、

list1 =[1

,2,3

,4]list2 =[5

,6,7

,8]zipped =

zip(list1, list2)

res =

zip(

*zipped)

print

([i for i in res]

)"""

[(1, 2, 3, 4), (5, 6, 7, 8)]

"""

一般認為這是乙個unzip的過程,它的執行機制是這樣的:

zipped的值為:[(1,5),(2,6),(3,7),(4,8)]

那麼zip(zipped)相當於:zip((1,5),(2,6),(3,7),(4,8))

所以執行結果為:[(1, 2, 3, 4), (5, 6, 7, 8)]

注:在函式呼叫中使用list/tuple的方式表示將list/tuple分開,作為位置引數傳遞給對應函式(前提是對應函式支援不定個數的位置引數)

5、

x =[1

,2,3

]y =

[x]*

3res =

zip(

*[x]*3

)print

(y)print

([i for i in res]

)"""

[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

[(1, 1, 1), (2, 2, 2), (3, 3, 3)]

"""

它執行機制:

首先[x]* 3:[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

zip(* [x] * 3)相當於zip([1, 2, 3], [1, 2, 3], [1, 2, 3])

這樣看來就明了許多了是嗎

Python zip 函式的用法

python函式式程式設計之zip zip zip 函式接受0個或多個序列作為引數,返回乙個tuple列表。zip 函式具體的工作機制是,將每個列表中同一位置的元素取出來組成乙個元組,存放到乙個列表中,然後返回這個列表。舉例說明 x 1,2,3 y a b c z 4,5,6 zip xyz zip...

Python zip函式及用法

zip 函式可以把兩個列表 壓縮 成乙個 zip 物件 可迭代物件 這樣就可以使用乙個迴圈並行遍歷兩個列表。為了測試 zip 函式的功能,我們可以先在互動式直譯器中 試驗 一下該函式的功能。a a b c b 1,2,3 x for x in zip a,b a 1 b 2 c 3 從上面的測試結果...

Python zip函式及用法

zip 函式是 python 內建函式之一,它可以將多個序列 列表 元組 字典 集合 字串以及 range 區間構成的列表 壓縮 成乙個 zip 物件。所謂 壓縮 其實就是將這些序列中對應位置的元素重新組合,生成乙個個新的元組。和 python 3.x 版本不同,python 2.x 版本中的 zi...