定義:zip([iterable, …])
zip()是python的乙個內建函式,它接受一系列可迭代的物件作為引數,將物件中對應的元素打包成乙個個tuple(元組),然後返回由這些tuples組成的list(列表)。若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。利用*號操作符,可以將list unzip(解壓),看下面的例子就明白了:
>> a = [1,2,3]
>> b = [4,5,6]
>> c = [4,5,6,7,8]
>> zipped = zip(a,b)
[(1, 4), (2, 5), (3, 6)]
>> zip(a,c)
[(1, 4), (2, 5), (3, 6)]
>> zip(*zipped)
[(1, 2, 3), (4, 5, 6)]
對於這個並不是很常用函式,下面舉幾個例子說明它的用法:
* 二維矩陣變換(矩陣的行列互換)
比如我們有乙個由列表描述的二維矩陣
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
通過python列表推導的方法,我們也能輕易完成這個任務
print [ [row[col] for row in a] for col in range(len(a[0]))]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
另外一種讓人困惑的方法就是利用zip函式:
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
map(list,zip(*a))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
zip函式接受任意多個序列作為引數,將所有序列按相同的索引組合成乙個元素是各個序列合併成的tuple的新序列,新的序列的長度以引數中最短的序列為準。另外(*)操作符與zip函式配合可以實現與zip相反的功能,即將合併的序列拆成多個tuple。
①tuple的新序列
x=[1,2,3],y=['a','b','c']
zip(x,y)
[(1,』a』),(2,』b』),(3,』c』)]
②新的序列的長度以引數中最短的序列為準.
x=[1,2],y=['a','b','c']
zip(x,y)
[(1,』a』),(2,』b』)]
③(*)操作符與zip函式配合可以實現與zip相反的功能,即將合併的序列拆成多個tuple。
x=[1,2,3],y=['a','b','c']
zip(*zip(x,y))
[(1,2,3),(『a』,』b』,』c』)]
Python中的Zip 函式
zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。zip 語法 zip iterable,引數說明 返回元組列表。以下例項展示了 zip 的使...
python中的zip函式
先貼上原始碼 zip iter1 iter2 zipobject return a zip object whose next method returns a tuple where the i th element comes from the i th iterable argument.th...
Python中的zip函式
zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。ps.如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。a 1,2,3 b 4,5,6 c 4,5,6,7,8 zipped zip a,b ...