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

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