Python的zip
生活随笔
收集整理的這篇文章主要介紹了
Python的zip
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? ? ?zip是Python的一個內置函數,主要用于對多個序列中相對應的元素進行配對,并合并這些序列。? ? ? ?(1)基本用法看下面的例子:
a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
print(list(zip(a, b, c)))輸出結果:[(1,?4,?7),?(2,?5,?8),?(3,?6,?9)]? ? ? ?zip分別將序列a,b,c中相對應的第1個、第2個、第3個元素進行了配對,并糅合成一個序列。注意:? ? ? ?1)zip配對的元素形成的是元組(tuple)? ? ? ?2)Python3中zip、map、filter等內置函數出于效率的考慮,返回的都是對象,可以通過list()轉換成列表
? ? ? ?(2)自動截取? ? ? ?當傳入序列的長度不同時,zip能自動以最短序列長度為準進行截取。看示例:
a = [1, 2, 3]
b = [4, 5, 6, 21, 23]
c = [7, 8, 9, 17]
print(list(zip(a, b, c)))輸出結果:[(1,?4,?7),?(2,?5,?8),?(3,?6,?9)]? ? ? ?序列a,b,c的長度分別為3,5,4。zip自動截取長度為3。? ? ? ?如果要取最長序列長度為準,需要使用itertools包下的zip_longest,zip_longest將較短序列通過fillvalue為默認填充值進行填充,統一到與最長序列長度一樣,示例:import itertoolsa = [1, 2, 3]
b = [4, 5, 6, 21, 23]
c = [7, 8, 9, 17]
print(list(itertools.zip_longest(a, b, c, fillvalue=0)))輸出結果:[(1,?4,?7),?(2,?5,?8),?(3,?6,?9),?(0,?21,?17),?(0,?23,?0)]? ? ? ?序列a,b,c的長度分別為3,5,4。zip_longest自動截取長度為5,長度不滿5的使用fillvalue=0進行填充。? ? ??? ? ? (3)常用于列表推導式? ? ? ?zip常用于列表推導式或字典推導式,用于糅合多個序列。names = ['Rose', 'Lisa', 'Michael', 'Jack', 'Tony']
scores = [4.5, 4.2, 4.0, 5.0, 3.5]
d = {n: s for n, s in zip(names, scores)}
print(d)輸出結果:{'Michael':?4.0,?'Tony':?3.5,?'Jack':?5.0,?'Lisa':?4.2,?'Rose':?4.5}? ? ? ?(4)使用*號操作符? ? ???通過使用*號操作符,能夠將zip進行反向操作。示例:a = [1, 2, 3]
b = [4, 5, 6]
c = [7, 8, 9]
d = list(zip(a, b, c))
print('d=', d)
e = list(zip(*d))
print('e=', e)
輸出結果:d=?[(1,?4,?7),?(2,?5,?8),?(3,?6,?9)]e=?[(1,?2,?3),?(4,?5,?6),?(7,?8,?9)]
總結
以上是生活随笔為你收集整理的Python的zip的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python的序列切片
- 下一篇: 完美字符串