リストを均等な大きさの塊に分割するには?
任意の長さのリストがあり、それを同じサイズのチャンクに分割して演算する必要があります。カウンタと2つのリストを保持し、2つ目のリストがいっぱいになったら、それを1つ目のリストに追加し、2つ目のリストを空にして次のデータラウンドに備えるなど、明らかな方法がありますが、これは非常にコストがかかる可能性があります。
しかし、これは非常にコストがかかる可能性があります。誰かジェネレーターを使うなどして、任意の長さのリストに対する良い解決策を持っていないかと思います。
私は itertools
で有用なものを探していましたが、明らかに有用なものは見つかりませんでした。見逃しているかもしれませんが。
関連する質問です。チャンクでリストを反復処理する最も「パイソン的」な方法は何ですか?.
2047
3
欲しいチャンクを生成するジェネレーターがあります。
Python 2を使用している場合は、
range()
ではなくxrange()
を使用してください。また、関数を書く代わりに単純にリスト内包を使うこともできますが、コードを理解しやすくするために、このような操作を名前付き関数でカプセル化するのは良いアイデアです。Python 3:
Python 2 バージョン。
ここでは,任意のイテレータブルで動作するジェネレータを紹介します.
例
リストサイズを知っていれば
そうでない場合(イテレータ)。
後者の場合、シーケンスが常に与えられたサイズのチャンクを整数個含んでいる(つまり、最後のチャンクが不完全ではない)ことが確認できれば、より美しい方法で言い換えることができます。