使用Padding 擴充Zip 功能
Zip() 是將多個序列中的元素組合到單一元組列表中的有用函數。但是,它有一個限制,因為它只能建立具有與最短輸入序列一樣多的元素的元組。在處理不同長度的序列時,這可能會導致結果不完整。
為了克服此限制,引入了一個名為 zip_longest() 的更高級函數。 zip_longest() 在 Python 3 中可用,它提供了 zip() 的增強版本,可以自動填入結果中的缺失值,以便結果清單的長度與最長輸入的長度而不是最短輸入的長度相符。
要使用 zip_longest(),只需將要組合的序列作為參數傳遞給它即可。此函數將為輸入序列中的每組對應元素建立元組,並將使用預設填充值(通常為無)填充任何缺失值。
例如,請考慮以下程式碼片段:
a = ['a1'] b = ['b1', 'b2', 'b3'] c = ['c1', 'c2'] print(list(itertools.zip_longest(a, b, c)))
此程式碼將輸出以下元組清單:
[('a1', 'b1', 'c1'), (None, 'b2', 'c2'), (None, 'b3', None)]
如您所見,結果清單與最長輸入序列(b) 的長度相同。 a 和 c 中缺少的值已用 None 填入。
您也可以使用 fillvalue 參數指定自訂填充值。例如,以下程式碼片段以字串「foo」填入缺失值:
print(list(itertools.zip_longest(a, b, c, fillvalue='foo')))
這將輸出以下元組清單:
[('a1', 'b1', 'c1'), ('foo', 'b2', 'c2'), ('foo', 'b3', 'foo')]
以上是Python 的 zip_longest() 函數如何處理不等長的輸入序列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!