【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 |

https://yaromai.jp/python-list/