[Python]Array.arrayを特定の個数ずつに分割するには?

python

どうも、ちょげ(@chogetarou)です。

Array.arrayを特定の個数ずつに分割する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

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を使う方法
  • 内包表記を使う方法

コメント

タイトルとURLをコピーしました