【Python】arrayモジュール配列の使い方を解説
今回はPythonのarrayモジュールを使った配列について紹介します。
Pythonで配列というと一般的にリストを指しますが、arrayモジュールはC言語のような配列です。
(リストは文字列や数値を混在させることができますが、arrayモジュールの配列は格納できる値の型を指定します)
メモリ使用量を節約できるので大規模データを扱う際には活用してみてください。
リストについては↓の記事をご覧ください。
arrayモジュールの使い方
import array
# データ型(ここでは'i')を指定して配列を初期化
arr = array.array('i', [1, 2, 3])
arr.append(4) # 要素の追加
arr.fromlist([5, 6, 7, 8]) # リストから要素を追加
print(arr[1]) # 2
print(arr) # array('i', [1, 2, 3, 4, 5, 6, 7, 8])
arrayを使うときはimportによってarrayモジュールを読み込みます。
メソッドなどはほとんどリストと同じなのですが、初期化方法に違いがあります。
# データ型(ここでは'i')を指定して配列を初期化
arr = array.array('i', [1, 2, 3])
arrayモジュールでは格納できる値の型を1つにする必要があります。その型は初期化するときに指定します。
サンプルコードでは引数に’i’を渡してint型の配列を作成しています。
型の種類については末尾に一覧表を記載したので、ご確認ください。
arrayモジュールのメソッド一覧
arrayモジュールのメソッドは下表のようになります。
大半のメソッドはリストと同じ名称で、バイト数を把握するためのメソッドなどが存在します。
メソッド | 説明 |
---|---|
append(x) | 値 x の新たな要素を配列の末尾に追加します。 |
buffer_info() | 配列の内容を記憶するために使っているバッファの、現在のメモリアドレスと要素数の入ったタプル (address, length) を返します。 |
byteswap() | 配列のすべての要素に対して「バイトスワップ」 (リトルエンディアンとビッグエンディアンの変換) を行います。このメソッドは大きさが 1、2、4 および 8 バイトの値のみをサポートしています。 |
count(x) | シーケンス中の x の出現回数を返します。 |
extend(iterable) | iterable から要素を取り出し、配列の末尾に要素を追加します。 |
frombytes(s) | 文字列から要素を追加します。 |
fromfile(f, n) | ファイルオブジェクト f から (マシンのデータ形式そのままで) n 個の要素を読み出し、配列の末尾に要素を追加します。 |
fromlist(list) | リストから要素を追加します。 |
fromunicode(s) | 指定した Unicode 文字列のデータを使って配列を拡張します。配列の型コードは 'u’ でなければなりません。 |
index(x[, start[, stop]]) | i が配列内で x が最初に出現するインデックスとなるような最小の i を返します。 |
insert(i, x) | 配列中の位置 i の前に値 x をもつ新しい要素を挿入します。 |
pop([i]) | 配列からインデックスが i の要素を取り除いて返します。 |
remove(x) | 配列中の x のうち、最初に現れたものを取り除きます。 |
reverse() | 配列の要素の順番を逆にします。 |
tobytes() | array をマシンの値の array に変換して、 bytes の形で返します。 |
tofile(f) | すべての要素を (マシンの値の形式で) file object f に書き込みます。 |
tolist() | 配列を同じ要素を持つ普通のリストに変換します。 |
tounicode() | 配列を Unicode 文字列に変換します。配列の型コードは 'u’ でなければなりません。 |
arrayモジュールのデータ型一覧
arrayモジュールのデータ型は下表のようになります。
型コード | C の型 | Python の型 | 最小サイズ (バイト単位) |
---|---|---|---|
'b’ | signed char | int | 1 |
'B’ | unsigned char | int | 1 |
'u’ | wchar_t | Unicode文字(unicode型) | 2 |
'h’ | signed short | int | 2 |
'H’ | unsigned short | int | 2 |
'i’ | signed int | int | 2 |
'I’ | unsigned int | int | 2 |
'l’ | signed long | int | 4 |
'L’ | unsigned long | int | 4 |
'q’ | signed long long | int | 8 |
'Q’ | unsigned long long | int | 8 |
'f’ | 浮動小数点数 | 浮動小数点数 | 4 |
'd’ | double | 浮動小数点数 | 8 |