Python zip方法理解

zip函數(shù)的原型為:zip([iterable, …])

參數(shù)iterable為可迭代的對(duì)象,并且可以有多個(gè)參數(shù)。該函數(shù)返回一個(gè)以元組為元素的列表,其中第 i 個(gè)元組包含每個(gè)參數(shù)序列的第 i 個(gè)元素。返回的列表長(zhǎng)度被截?cái)酁樽疃痰膮?shù)序列的長(zhǎng)度。只有一個(gè)序列參數(shù)時(shí),它返回一個(gè)1元組的列表。沒有參數(shù)時(shí),它返回一個(gè)空的列表。

zip函數(shù) 通俗一點(diǎn)就是一個(gè)可以結(jié)合多個(gè)列表的一個(gè)函數(shù)

舉個(gè)例子:

x = [1, 2, 3]  
y = [4, 5, 6]  
z = [7, 8, 9]  
xyz = zip(x, y, z)  
print(list(i))

[(1, 4, 7),(2, 5, 8),(3, 6, 9)] #可以看到zip返回出來的還是一個(gè)tuple列表
可以看出zip將三個(gè)列表采用一一對(duì)應(yīng)的方式相結(jié)合起來了

再舉一個(gè)例子:

x = ["id", "name", "age"]  
y = [3306,"dh",18]  
xy = zip(x, y)  
print(list(xy))  
[('id', 3306), ('name', 'dh'), ('age', 18)]  

zip還可以處理一個(gè)或多個(gè)的列表

x = [1, 2, 3, 4]  
x = zip(x)  
print(list(x))  
[(1,), (2,), (3,), (4,)]  

要是兩個(gè)列表的長(zhǎng)度不一致zip會(huì)怎么處理呢?

x = [1, 2, 3]  
y = [4, 5, 6, 7]  
xy = zip(x, y)  
print(list(xy)
[(1, 4), (2, 5), (3, 6)]  

可以看出y列表要比x列表長(zhǎng),但是zip后是以x為基準(zhǔn)來結(jié)合的 注:(zip結(jié)合列表時(shí)會(huì)以最短的那個(gè)列表為它的長(zhǎng)度)

zip類似于壓縮與解壓縮的操作:

x = [1, 2, 3]                   #unzip過程 類似于zip的逆過程  
y = [4, 5, 6]  
z = [7, 8 ,9]  
xyz = zip(x, y, z)  
zyx = zip(*xyz)                 # 在這里我將這個(gè)過程理解成一個(gè)解壓縮的過程,*xyz 表示將xyz列表中的元素來zip,當(dāng)xyz列表中存的是列表元素時(shí),就是將列表元素來zip。也就是將列表還原  
print(list(zyx))                #xyz是:xyz=[[1, 4, 7], [2, 5, 8], [3, 6, 9]]   zip(*xyz)=>zip([1, 2, 3],[4, 5, 6],[7, 8, 9])  
[(1, 2, 3), (4, 5, 6), (7, 8, 9)]  

zip生成列表的方法:

x = [1, 2, 3, 4]  
y = zip(* [x] * 2)          #完成步驟 1: [x]會(huì)生成一個(gè)只有一個(gè)x元素的列表    2: [x]*2  列表元素*重復(fù)2次     3:那么zip(* [x] * 2)則表示zip(x, x)  
print(list(y)
[(1, 1), (2, 2), (3, 3), (4, 4)]  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 內(nèi)置函數(shù)Python解釋器內(nèi)置了許多功能和類型,總是可用的。他們是按字母順序列在這里。 abs(x)返回一個(gè)數(shù)的絕...
    uangianlap閱讀 1,376評(píng)論 0 0
  • PYTHON-進(jìn)階-ITERTOOLS模塊小結(jié)轉(zhuǎn)自wklken:http://wklken.me/posts/20...
    C_Y_閱讀 1,183評(píng)論 0 2
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,829評(píng)論 1 118
  • 1 itertools函數(shù) 以下模塊級(jí)別函數(shù)都構(gòu)造并返回iterator。有些iterator是無限長(zhǎng)度的流,因此...
    lakerszhy閱讀 1,180評(píng)論 0 3
  • 上一章-世外桃源 小說目錄 第五章-算命老人 她常常穿著一件白色的長(zhǎng)披風(fēng),遮住皮膚不被太陽(yáng)曬著。獨(dú)自在大街上行走,...
    冰寒三尺閱讀 563評(píng)論 2 10

友情鏈接更多精彩內(nèi)容