Python Glossary English

все 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Сообщить о неточности