タグ付けされた質問 「chunks」

30
リストを均等なサイズのチャンクにどのように分割しますか?
任意の長さのリストがあり、同じサイズのチャンクに分割して操作する必要があります。カウンタと2つのリストを保持するなど、これを行ういくつかの明白な方法があります。2番目のリストがいっぱいになったときに、最初のリストに追加し、次のデータラウンドのために2番目のリストを空にしますが、これは潜在的に非常にコストがかかります。 ジェネレーターを使用するなど、長さのリストに対してこれに対する良い解決策があるかどうか疑問に思いました。 に役立つものを探していましたitertoolsが、明らかに役立つものは見つかりませんでした。しかし、見逃したかもしれません。 関連質問:チャンクのリストを反復処理する最も「パイソン的な」方法は何ですか?
2268 python  list  split  chunks 

30
チャンクのリストを反復する最も「パイソン的な」方法は何ですか?
入力として整数のリストを受け取るPythonスクリプトがあり、一度に4つの整数を処理する必要があります。残念ながら、私は入力を制御できません。または、4要素のタプルのリストとして渡されます。現在、私はそれをこのように繰り返しています: for i in xrange(0, len(ints), 4): # dummy op for example code foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3] それは「C-think」によく似ていますが、この状況に対処するためのよりパイソン的な方法があるのではないかと思います。リストは反復後に破棄されるため、保持する必要はありません。おそらく、このようなものが良いでしょうか? while ints: foo += ints[0] * ints[1] + ints[2] * ints[3] ints[0:4] = [] ただし、それでも「気分」はよくありません。:-/ 関連質問:Pythonではどのようにリストを均等なサイズのチャンクに分割しますか?


30
リストをほぼ等しい長さのN個の部分に分割する
リストをほぼ等しい部分に分割する最良の方法は何ですか?たとえば、リストに7つの要素があり、2つの部分に分割されている場合、1つの部分で3つの要素を取得し、もう1つの部分で4つの要素を取得する必要があります。 even_split(L, n)そのような部分に分割Lするようなものを探していnます。 def chunks(L, n): """ Yield successive n-sized chunks from L. """ for i in range(0, len(L), n): yield L[i:i+n] 上記のコードは、3つのチャンクではなく3つのチャンクを提供します。単純に転置することもできます(これを繰り返し、各列の最初の要素を取り、その部分を1番目に呼び出し、次に2番目を取り、2番目の部分に配置するなど)。ただし、アイテムの順序が破壊されます。
148 python  list  chunks 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.