Pythonのarray.array
モジュールは、基本的な値(文字、整数、浮動小数点数)の配列を効率的に表現するためのものです。このモジュールは、リストとほぼ同じように振る舞いますが、中に入れるオブジェクトの型に制限がある点が異なります。
import array
# 数値型の空の配列を初期化
arr = array.array('i', [])
# 値を加える。
arr.append(1)
print(arr) # array('i', [1])
上記の例では、整数型の空の配列を初期化し、値を追加しています。型が違う値を加えようとすると、エラーになります。
また、array.array
は、リストよりもメモリ効率が良く、高速アクセスが可能な点に魅力があります。具体的にはpop()
とinsert()
の速度が明らかに違います。
import array
import time
a_list = [i for i in range(1000000)]
s = time.time()
for i in range(10000):
a_list.pop(500000)
a_list.insert(500000, 500000)
print('list:', time.time() - s)
arr = array.array('i', a_list)
s = time.time()
for i in range(10000):
arr.pop(500000)
arr.insert(500000, 500000)
print('array:', time.time() - s)
# list: 5.113029718399048
# array: 2.0941877365112305
上記の例では、要素数100万の配列に対して1万回ずつpop()
とinsert()
を繰り返しています。結果として、array.array
の方が顕著に速いことがわかります。
以上のように、Pythonのarray.array
モジュールは、特定の状況下でリストよりも優れた性能を発揮します。そのため、適切な場面での利用が推奨されます。