どうも、ちょげ(@chogetarou)です。
リスト(List)を特定の個数ずつに分割する方法を紹介します。
方法

リスト(List)を特定の個数ずつに分割する方法は、2つあります。
yield
1つは、yieldを使う方法です。
まず、range()をforループします。
range()の第1引数に0、第2引数にリストの長さ、第3引数に個数を指定します。
そして、ループ処理で、リストをforループの変数から個数分スライスします。
def split_list(l, n):
for i in range(0, len(l), n):
yield l[i:i+n]
上記の関数は、第1引数のリスト(List)を第2引数の個数ずつで分割します。
使用例
def split_list(l, n):
for i in range(0, len(l), n):
yield l[i:i+n]
numbers = [1, 2, 3, 4, 5, 6,]
result = list(split_list(numbers, 3))
print(result) #[[1, 2, 3], [4, 5, 6]]
r,s,t = split_list(numbers, 2)
print(r) #[1, 2]
print(s) #[3, 4]
print(t) #[5, 6]
内包表記
もう1つは、内包表記を使う方法です。
まず、[]を記述し、[]内でrange()をforループします。
range()の第1引数に0、第2引数にリストの長さ、第3引数に個数を指定します。
そして、ループ処理で、リストをforループの変数から個数分スライスします。
result = [list[i:i+n] for i in range(0, len(list), n)]
上記の[]は、リストをrange()の第3引数の個数ずつで分割したリストを生成します。
使用例
numbers = [1, 2, 3, 4, 5, 6,]
result = [numbers[i:i+2] for i in range(0, len(numbers), 2)]
print(result)
#[[1, 2],
# [3, 4],
# [5, 6]]
まとめ
リスト(List)を特定の個数ずつに分割する方法は、次の2つです。
- yieldを使う方法
- 内包表記を使う方法
コメント