Python でチャンクによるイテレータの反復
特定のサイズのチャンクによるイテレータの反復は、Python の一般的なタスクです。これを実現するには、次のアプローチの使用を検討してください。
itertools.grouper() 関数の使用:
itertools.grouper() 関数は、グループ化のための汎用性の高い方法を提供します。チャンクに分割して反復可能。ただし、不完全な最終チャンクに対応するには追加の処理が必要です。これは、incomplete パラメーターを使用して実現できます。
from itertools import grouper it = iter([1, 2, 3, 4, 5, 6, 7]) chunk_size = 3 chunks = list(grouper(it, chunk_size, incomplete='ignore')) print(chunks) # [[1, 2, 3], [4, 5, 6], [7]]
itertools.batched() 関数の使用 (Python 3.12 ):
Python 3.12 で itertools.batched() 関数が導入されましたチャンク化を明示的に処理し、元のシーケンス タイプを保持します。
from itertools import batched it = [1, 2, 3, 4, 5, 6, 7] chunk_size = 3 chunks = list(batched(it, chunk_size)) print(chunks) # [[1, 2, 3], [4, 5, 6], [7]]
シーケンス イテレータの代替ソリューション:
シーケンスの場合、あまり一般的ではありませんが便利なソリューションは、リストを使用することです。チャンク サイズと同じステップ サイズでスライスします。
it = [1, 2, 3, 4, 5, 6, 7] chunk_size = 3 chunks = [it[i:i + chunk_size] for i in range(0, len(it), chunk_size)] print(chunks) # [[1, 2, 3], [4, 5, 6], [7]]
これらメソッドは、チャンクごとに反復子を反復処理する効率的な方法を提供し、不完全な最終チャンクの柔軟な処理と、必要に応じて元のシーケンス タイプの保存を可能にします。
以上がPython を使用してチャンク内のイテレーターを反復処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。