首頁 >後端開發 >Python教學 >Python 的 zip_longest() 函數如何處理不等長的輸入序列?

Python 的 zip_longest() 函數如何處理不等長的輸入序列?

Barbara Streisand
Barbara Streisand原創
2024-12-05 04:14:09876瀏覽

How Does Python's `zip_longest()` Function Handle Unequal-Length Input Sequences?

使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn