アルパカログ

Webエンジニア兼マネージャーがプログラミングやマネジメント、読んだ本のまとめを中心に書いてます。

Python リストを任意の数に分割する(N分割)

f:id:otoyo0122:20200812200242p:plain:w300

PythonでリストをN分割したいときがあります。

このエントリでは、PythonでリストをN分割するスニペットを紹介します。

リストをN分割するコードスニペット

[arr[i::n] for i in range(n)]
  • arr: 分割したいリスト(配列)
  • n: 分割数
>>> arr = [1, 2, 3, 4, 5, 6, 7]
>>> n = 3
>>> divided_arr = [arr[i::n] for i in range(n)]
>>> divided_arr
[[1, 4, 7], [2, 5], [3, 6]]

解説

range(n)は0からN-1までの整数を生成します。

>>> range(3)
[0, 1, 2]

arr[i::n]はリストのスライスです。[start:end:step]となります。

step=3としてstartを1ずつ増やした場合を見てみましょう。

>>> arr = [1, 2, 3, 4, 5, 6, 7]
>>> arr[0::3]
[1, 4, 7]
>>> arr[1::3]
[2, 5]
>>> arr[2::3]
[3, 6]

rangeで生成したインデックスをスライスのstartに設定しているというわけですね。

以上です。

このエントリでは、PythonでリストをN分割するスニペットを紹介しました。