Python リストを n 個のチャンクに分割する 質問する

Python リストを n 個のチャンクに分割する 質問する

この質問は何度も取り上げられていることは承知していますが、私の要件は異なります。

次のようなリストがあります。range(1, 26)このリストを固定数 に分割しますn。n = 6 と仮定します。

>>> x
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25]
>>> l = [ x [i:i + 6] for i in range(0, len(x), 6) ]
>>> l
[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18], [19, 20, 21, 22, 23, 24], [25]]

nご覧のとおり、6 つのチャンク (元のリストの要素を含む 6 つのサブリスト) は取得されませんでした。リストを分割して、偶数または奇数のチャンクを正確に取得するにはどうすればよいでしょうか。

ベストアンサー1

numpyを使用する

>>> import numpy
>>> x = range(25)
>>> l = numpy.array_split(numpy.array(x),6)

または

>>> import numpy
>>> x = numpy.arange(25)
>>> l = numpy.array_split(x,6);

numpy.split を使用することもできますが、長さが正確に割り切れない場合はエラーが発生します。

おすすめ記事