チャンクでリストを反復処理する必要性は、大規模なデータセットの処理など、さまざまなプログラミング シナリオで発生します。この記事では、このタスクを達成するための最も効率的で 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 中国語 Web サイトの他の関連記事を参照してください。