首頁 > 後端開發 > Python教學 > 如何在 Python 中使用「itertools.cycle」壓縮不同大小的清單?

如何在 Python 中使用「itertools.cycle」壓縮不同大小的清單?

Linda Hamilton
發布: 2024-10-27 13:12:30
原創
820 人瀏覽過

How to Zip Differently Sized Lists Using `itertools.cycle` in Python?

使用內建函數壓縮不同大小的清單

雖然內建zip 函數在合併兩個時無法重複較短的清單對於不同大小的列表,您可以利用itertools.cycle 函數來實現此結果。

Python 套件 itertools 中的循環會建立一個迭代器,即使在其耗盡之後,它也會重複從可迭代物件中傳回元素。透過將 zip 與迴圈結合,可以處理清單之間的大小差異,並確保根據需要重複較長的清單。

範例:

<code class="python">A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = ["A", "B", "C"]

# Use itertools.cycle to repeat the shorter list
from itertools import cycle
zip_list = zip(A, cycle(B)) if len(A) > len(B) else zip(cycle(A), B)</code>
登入後複製

在此範例:

  • if len(A) > len(B) 檢查第一個列表(A) 是否比第二個列表(B) 長。
  • 如果是,則使用zip 將A 與B 的循環迭代器合併,從而在整個合併結果中有效地重複B .
  • 如果B 更長,則翻轉順序並循環A 。

結果:

zip_list 將包含以下元組作為生成器物件:

[(1, 'A'), (2, 'B'), (3, 'C'), (4, 'A'), (5, 'B'), (6, 'C'), (7, 'A'), (8, 'B'), (9, 'C')]
登入後複製

itertools.cycle 建立可迭代物件的副本(在本例中為B)並重複傳回其元素。當 zip 迭代 A 時,它將每個元素與循環迭代器中的下一個可用元素配對。

如果 A 比 B 短,則一旦迭代器耗盡,該過程就會從 B 的開頭重新開始。相反,如果 A 更長,B 迭代器會不斷循環以填充合併清單的剩餘部分。

以上是如何在 Python 中使用「itertools.cycle」壓縮不同大小的清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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