1

重複の可能性:
Pythonでリストを均等なサイズのチャンクに分割するにはどうすればよいですか?

アイデアは非常に単純です、私はこのようなことをしたいと思います:

for elem1, elem2, elem3 in list:
    <some code>

これが機能するためには、そのリストが次のような3つの反復可能なリストである必要があります。

list = [[1, 2, 3], [4, 5, 6]]

しかし、このリストが単なる通常のリストである場合はどうすればよいですか?

list = [1, 2, 3, 4, 5, 6]

ループが機能するように、この通常のリストを3回反復可能なリストに変換する高速で簡単な方法はありますか?またはn-iterables、ここでは例として3を使用します。

ありがとう。

4

1 に答える 1

5

grouperitertoolsのレシピを使用します。

def grouper(n, iterable, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)

そして次のようなもの:

for a, b, c in grouper(3, some_list):
    pass # whatever
于 2013-01-14T08:06:26.373 に答える