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