首頁 > 後端開發 > Python教學 > 如何擴展 Python 的 zip() 函數來處理不等長度的可迭代物件?

如何擴展 Python 的 zip() 函數來處理不等長度的可迭代物件?

Linda Hamilton
發布: 2024-11-27 17:56:13
原創
402 人瀏覽過

How Can I Extend Python's zip() Function to Handle Iterables of Unequal Lengths?

擴充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 2 中,您可以使用itertools.izip_longest (Python 2.6 中引入)或使用帶有 None 的 map。

以上是如何擴展 Python 的 zip() 函數來處理不等長度的可迭代物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板