以塊的形式迭代列表:Pythonic 解決方案
在本文中,我們探索以塊的形式迭代Python 列表的方法,其中每個區塊由特定數量的元素組成。給定的情況涉及一次處理四個整數。
傳統方法
提供的程式碼片段描述了對清單進行分塊的C 風格方法:
for i in range(0, len(ints), 4): # dummy op for example code foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3]
雖然此方法有效,但它可能與Python 的慣用方式不一致
Python解
1.使用 chunker 函數
從 Python 3.12 開始,Python 引入了 chunker函數,它提供了一種簡潔高效的方法來對任何序列進行分塊:
def chunker(seq, size): return (seq[pos:pos + size] for pos in range(0, len(seq), size))
該函數創建一個生成器從給定的序列中生成指定大小的區塊。以下程式碼展示了用法:
for group in chunker(text, 7): print(repr(group),)
2.使用 itertools.islice
對於 3.12 之前的 Python 版本,itertools.islice可用於分塊:
from itertools import islice def grouper(seq, size): it = iter(seq) while True: chunk = list(islice(it, size)) if not chunk: return yield chunk
此函數類似地建立一個產生器,它會產生元素清單從
結論
chunker 函數為Python 3.12 及更高版本中的分塊清單提供了原生且高效的解決方案。對於早期版本,grouper 函數提供了合適的替代方案。這些方法允許在處理大型清單時使用更簡潔和慣用的程式碼。
以上是如何有效地分塊迭代 Python 列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!