在各種程式設計場景中都會出現以區塊的形式迭代列表的需求,例如處理大型資料集。本文深入探討了實現此任務的最有效且 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 風格的替代方案是提議:
while ints: foo += ints[0] * ints[1] + ints[2] * ints[3] ints[0:4] = []
這種方法利用 Python 的列表切片來刪除已處理的元素,提供更乾淨的解決方案。
Python 3.12 引入chunker()
隨著Python 3.12 的發布,備受期待的chunker() 函數誕生了介紹:
from itertools import islice def chunker(seq, size): it = iter(seq) while True: chunk = list(islice(it, size)) if not chunk: break yield chunk
這個函數優雅地迭代任何類型的序列,將其分割成所需大小的區塊。以下範例說明了它的多功能性:
text = "I am a very, very helpful text" for group in chunker(text, 7): print(repr(group),) # 'I am a ' 'very, v' 'ery hel' 'pful te' 'xt' print('|'.join(chunker(text, 10))) # I am a ver|y, very he|lpful text animals = ['cat', 'dog', 'rabbit', 'duck', 'bird', 'cow', 'gnu', 'fish'] for group in chunker(animals, 3): print(group) # ['cat', 'dog', 'rabbit'] # ['duck', 'bird', 'cow'] # ['gnu', 'fish']
chunker() 函數增強了 Python 已經豐富的列表操作生態系統,並進一步體現了其用戶友好性。
以上是如何在 Python 中高效地迭代塊列表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!