首頁 >後端開發 >Python教學 >如何在 Python 中高效地迭代塊列表?

如何在 Python 中高效地迭代塊列表?

Patricia Arquette
Patricia Arquette原創
2024-12-23 09:06:24966瀏覽

How to Efficiently Iterate Over a List in Chunks in Python?

如何以區塊的形式迭代列表

在各種程式設計場景中都會出現以區塊的形式迭代列表的需求,例如處理大型資料集。本文深入探討了實現此任務的最有效且 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中文網其他相關文章!

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