擴充zip() 功能:填滿最長長度
Python 的內建zip() 函數對來自多個可迭代物件的物件元素進行配對,但它將結果截斷為最短可迭代的長度。如果您需要使用None 值填充的更全面的zip 以與最長的輸入對齊,請考慮以下解決方案:
Python 3:itertools.zip_longest
在Python 中3、itertools提供了zip_longest()函數。它擴展結果列表以匹配最長輸入的長度。
import itertools a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] list(itertools.zip_longest(a, b, c)) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
您可以使用fillvalue 參數指定自訂填充值:
list(itertools.zip_longest(a, b, c, fillvalue='foo')) # [('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
Python 2: itertools.izip_longest 或map NonePython 2: itertools.izip_longest 或map None
from itertools import izip_longest a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] list(izip_longest(a, b, c)) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)] map(None, a, b, c) # [('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
以上是如何擴展 Python 的 zip() 函數來處理不等長度的可迭代物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!