все Python 3arrayпонятие
array.array
массивы
Компактный изменяемый массив чисел одного типа, задаваемого кодом ('i', 'd', 'B'…); хранит сырые значения, а не объекты.
Синтаксис
array.array(typecode[, initializer])
Список хранит указатели на отдельные объекты int (8 байт на ссылку плюс сам объект), а array — голые числа по itemsize байт, поэтому миллион целых в 'i' занимает около 4 МБ вместо 30+. Платой служит строгость: в 'i' не положить 1.5 (TypeError), в 'b' — 200 (OverflowError). Векторной математики нет: a * 2 повторяет массив, как у list, а не умножает числа — для этого numpy.
Примеры
import array, sys
nums = array.array('i', range(1000))
print(nums.itemsize * len(nums)) # → 4000
print(sys.getsizeof(nums) < sys.getsizeof(list(range(1000)))) # → True
print(nums[:3] * 2) # → array('i', [0, 1, 2, 0, 1, 2]) — повтор, а не умножение
import array
a = array.array('b', [1, 2])
try:
a.append(1.5)
except TypeError:
print('дробное не влезет') # → дробное не влезет
try:
a.append(200)
except OverflowError as e:
print(e) # → signed char is greater than maximum
print(array.array('B', b'abc').tolist()) # → [97, 98, 99]
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности