zip()是python的乙個內建函式,它接受一系列可迭代的物件作為引數,將物件中對應的元素打包成乙個個tuple(元組),然後返回由這些tuples組成的list(列表)。若傳入引數的長度不等,則返回list的長度和引數中長度最短的物件相同。利用*號操作符,可以將list unzip(解壓)。
1、生成的xyz是乙個zip物件
in [1]: x = [1, 2, 3]
...: y = [4, 5, 6]
...: z = [7, 8, 9]
...: xyz = zip(x, y, z)
#生成的xyz是乙個zip物件
in [2]: xyz
out[2]: 0x14120b9fac8>
#呼叫list函式將zip解析為列表,zip就是將每個列表每個對應同一位置新增在乙個元組裡面
in [3]: list(xyz)
out[3]: [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
2、不對等列表的zip
#如果有不對等的列表zip一起的情況時,按照最短的列表進行zip組合
in [4]: h = [2,3,4,5]
in [5]: xyzh = zip(x,y,z,h)
in [6]: xyzh
out[6]: 0x14122b44f88>
#h列表中的最後乙個因為其他的列表沒有對應的位置匹配而捨去
in [7]: list(xyzh)
out[7]: [(1, 4, 7, 2), (2, 5, 8, 3), (3, 6, 9, 4)]
3、zip(*)是zip的逆過程
#zip(*)是zip的逆過程·
x = [1, 2, 3] #unzip過程 類似於zip的逆過程
y = [4, 5, 6]
z = [7, 8 ,9]
xyz = zip(x, y, z)
zyx = zip(*xyz) # *xyz 表示將xyz列表中的元素來zip,當xyz列表中存的是列表元素時,就是將列表元素來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])
4、二維矩陣變換(矩陣的行列互換)
#比如我們有乙個由列表描述的二維矩陣
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 通過python列表推導的方法,我們也能輕易完成這個任務
[[row[col] for row in a] for col in range(len(a[0]))]
#另外一種方法就是利用zip函式:
in [18]: list(zip(a[0],a[1],a[2]))
out[18]: [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
in [20]: list(zip(*a))
out[20]: [(1, 4, 7), (2, 5, 8), (3, 6, 9)]
in [22]: list( map(list,zip(*a)))
out[22]: [[1, 4, 7], [2, 5, 8], [3, 6, 9]]
#這種方法速度更快但也更難以理解,將list看成tuple解壓,恰好得到我們「行列互換」的效果,再通過對每個元素應用list()函式,將tuple轉換為list
5、zip函式將字典反轉成列表形式
x =
#以列表返回可遍歷的(鍵, 值) 元組陣列
in [26]: x.items()
out[26]: dict_items([('name', 'dh'), ('age', 18), ('id', 3306)])
in [27]: x = zip(x.values(),x.keys())
in [28]: x
out[28]: at
0x202ce13b248>
in [29]: list(x)
out[29]: [('dh', 'name'), (18, 'age'), (3306, 'id')]
6、zip生成列表的方法
#完成步驟 :
#1: [x]會生成乙個只有乙個x元素的列表
#2: [x]*2 列表元素*重複2次
#3: 那麼zip(* [x] * 2)則表示zip(x, x)
in [30]: x = [1, 2, 3, 4]
...: y = zip(* [x] * 2)
in [31]: y
out[31]: 0x202cef0ea88>
in [32]: list(y)
out[32]: [(1, 1), (2, 2), (3, 3), (4, 4)]
in [35]: list(zip(*[x]))
out[35]: [(1,), (2,), (3,), (4,)]
in [36]: list(zip(*[x]*2))
out[36]: [(1, 1), (2, 2), (3, 3), (4, 4)]
python中的zip 函式詳解
一 zip iterables 函式詳解 1 zip 函式的定義 2 zip 函式的用法 python 3 zip 函式單個引數 in 1 list1 1,2,3,4 in 2 tuple1 zip list1 in 3 type tuple1 out 3 zip in 4 list tuple1 ...
python中的zip 函式詳解
一 zip iterables 函式詳解 1 zip 函式的定義 從引數中的多個迭代器取元素組合成乙個新的迭代器 返回 乙個zip物件,其內部元素為元組 可以轉化成列表或元組 傳入引數 元組 列表 字典等迭代器 2 zip 函式的用法 當zip 函式中只有乙個引數時,zip iterable 從迭代...
Python中的Zip 函式
zip 函式用於將可迭代的物件作為引數,將物件中對應的元素打包成乙個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同,利用 號操作符,可以將元組解壓為列表。zip 語法 zip iterable,引數說明 返回元組列表。以下例項展示了 zip 的使...