標籤:位置 用法 對象 樣本 瞭解 fun tar 可迭代對象 順序
今天分享一篇關於python下的zip()函數用法。
zip()是Python的一個內建函數,它接受一系列可迭代的對象作為參數,將對象中對應的元素按順序組合成一個tuple,每個tuple中包含的是原有序列中對應序號位置的元素,然後返回由這些tuples組成的list。若傳入參數的長度不等,則返回list的長度和參數中長度最短的對象相同。在所有參數長度相同的情況下,zip()與map()類似,沒有參數的情況下zip()返回一個空list。
使用zip反轉字典
<span style="font-family:Microsoft YaHei;">>>> m = {‘a‘: 1, ‘b‘: 2, ‘c‘: 3, ‘d‘: 4}m.items()[(‘a‘, 1), (‘c‘, 3), (‘b‘, 2), (‘d‘, 4)] zip(m.values(), m.keys())[(1, ‘a‘), (3, ‘c‘), (2, ‘b‘), (4, ‘d‘)] mi = dict(zip(m.values(), m.keys())) mi{1: ‘a‘, 2: ‘b‘, 3: ‘c‘, 4: ‘d‘}</span>
利用*號操作符,可以將list unzip(解壓成單獨的序列),基本樣本如官方文檔。
例:
help(zip)Help on built-in function zip in module __builtin__:zip(...) zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]
其中 zip([seq1, ...])接受一系列可迭代對象作為參數,將對象中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。若傳入參數的長度不等,則返回列表的長度和參數中長度最短的對象相同。
x=[1,2,3] y=[1,2,3] z=(1,2,3)zip(x,y,z)[(1, 1, 1), (2, 2, 2), (3, 3, 3)]
x=(1,2,3,4)y=[1,2,3]zip(x,y) #傳入參數的長度不等,則返回列表的長度和參數中長度最短的對象相同[(1, 1), (2, 2), (3, 3)]
x(1, 2, 3, 4)zip(x)[(1,), (2,), (3,), (4,)]
zip()[]
zip()配合*號操作符,可以將已經zip過的列表對象解壓,例如:
x=[1,2,3] y=[‘a‘,‘b‘,‘c‘]z=[4,5,6]xyz=zip(x,y,z) xyz[(1, ‘a‘, 4), (2, ‘b‘, 5), (3, ‘c‘, 6)]zip(*xyz)[(1, 2, 3), (‘a‘, ‘b‘, ‘c‘), (4, 5, 6)]
x=[5,6,7][x] #[x]產生一個列表的列表,它只有一個元素x[[5, 6, 7]][x]*3 #[x] * 3產生一個列表的列表,它有3個元素,[x, x, x][[5, 6, 7], [5, 6, 7], [5, 6, 7]]x[5, 6, 7] zip(*[x]*3) #zip(* [x] * 3)等價於zip(x, x, x)[(5, 5, 5), (6, 6, 6), (7, 7, 7)]
name=[‘song‘,‘ping‘,‘python‘] age=[26,26,27] zip(name,age)[(‘song‘, 26), (‘ping‘, 26), (‘python‘, 27)] for n,a in zip(name,age):... print n,a...song 26ping 26python 27
好了以上就是我個人所瞭解的zip()函數用法,今天筆記到此為止了,有什麼更好的建議和意見可以去我網站:圓柱模板 進行留言,謝謝!
python開發筆記之zip()函數用法詳解