zip()接受一系列可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)tuple,然后返回由這些tuple組成的list。
若傳入?yún)?shù)的長度不等,則返回list的長度和參數(shù)中長度最短的對(duì)象相同。
利用*號(hào)操作符,可以將list解壓。
python3.0開始,zip()函數(shù)已經(jīng)不返回list了,而是返回iterable(可迭代對(duì)象)。這個(gè)可迭代對(duì)象需要特別注意,只能進(jìn)行一次迭代遍歷,第二次遍歷就是空了。這個(gè)坑了我一個(gè)多小時(shí)。
#簡單示例
a=[1,2,3]
b=[4,5,6]
c=[7,8,9,10,11]
ab=zip(a,b)
print(list(ab))#[(1,4),(2,5),(3,6)]
#zip()之后的結(jié)果只能“使用一次”
#zip()實(shí)際上是一個(gè)生成器對(duì)象,故使用list()獲取zip()結(jié)果時(shí),已經(jīng)相當(dāng)于是完成一次迭代遍歷
#第二次再次使用list()時(shí)迭代已經(jīng)結(jié)束,所以返回[]
print(list(ab))#[]
ac=zip(a,c)
#print(list(ac))#[(1,4),(2,5),(3,6)],以短的為準(zhǔn)
_ac=zip(*ac)#與zip相反,可理解為解壓,返回二維矩陣式
print(list(_ac))#[(1,2,3),(7,8,9)],如果沒把上面的print(list(ac))注掉,這里的顯示結(jié)果就是[]了
#應(yīng)用示例一
print('應(yīng)用示例一')
name=('jack','alex','sony','joey')
age=(25,28,21,30)
fora,ninzip(name,age):
print(a,n)
#應(yīng)用示例二:二維矩陣行列轉(zhuǎn)換
print('應(yīng)用示例二')
a=[[1,2,3],[4,5,6],[7,8,9]]
print(list(map(list,zip(*a))))#[[1,4,7],[2,5,8],[3,6,9]],map()函數(shù)把zip(*a)后的每一個(gè)元素轉(zhuǎn)化為list
以上內(nèi)容為大家介紹了Python中zip函數(shù)的用法,希望對(duì)大家有所幫助,如果想要了解更多Python相關(guān)知識(shí),請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。http://m.2667701.com/