Этот модуль определяет тип объекта, который может компактно представлять массив базовых значений: символов, целых чисел, чисел с плавающей точкой. Массивы являются типами последовательностей и ведут себя очень похоже на списки, за исключением того, что тип объектов, хранимых в них, ограничен. Тип задается при создании объекта с помощью кода типа, который представляет собой один символ.

Поддерживаемые коды форматов:

Код Тип C Тип Python Минимальный размер в байтах
b signed char int 1
B unsigned char int 1
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 float float 4
d double float 8

Классы

array

Класс array(typecode, [iterable]) создает массив с элементами заданного типа. Начальное содержимое массива задается с помощью iterable. Если оно не предоставлено, создается пустой массив.

  from array import array

# Создание массива с типом 'i' (целые числа)
a = array('i', [1, 2, 3])
print(a)  # Вывод: array('i', [1, 2, 3])
  

Метод append(val) добавляет новый элемент val в конец массива, увеличивая его.

  a.append(4)
print(a)  # Вывод: array('i', [1, 2, 3, 4])
  

Метод extend(iterable) добавляет новые элементы, содержащиеся в iterable, в конец массива, увеличивая его.

  a.extend([5, 6])
print(a)  # Вывод: array('i', [1, 2, 3, 4, 5, 6])
  

Метод __getitem__(index) осуществляет чтение элемента массива по индексу, вызывается как a[index] (где a — это array). Возвращает значение, если index — это int, и array, если index — это срез. Отрицательные индексы считаются с конца, и выбрасывается IndexError, если индекс выходит за пределы диапазона.

  print(a[2])  # Вывод: 3
print(a[-1])  # Вывод: 6
# print(a[10])  # Это вызовет IndexError
  

Нельзя вызывать __getitem__ прямо (a.__getitem__(index) не сработает), но a[index] работает.

Метод __setitem__(index, value) осуществляет запись элемента в массив по индексу, вызывается как a[index] = value (где a — это array). value — одиночное значение, если index — это int, и array, если index — это срез. Отрицательные индексы считаются с конца, и выбрасывается IndexError, если индекс выходит за пределы диапазона.

  a[0] = 10
print(a)  # Вывод: array('i', [10, 2, 3, 4, 5, 6])
  

Нельзя вызывать __setitem__ прямо (a.__setitem__(index, value) не сработает), но a[index] = value работает.

Метод __len__() возвращает количество элементов в массиве, вызывается как len(a) (где a — это array).

  print(len(a))  # Вывод: 6
  

Нельзя вызывать __len__ прямо (a.__len__() не сработает), но len(a) работает.

Метод __add__(other) возвращает новый array, который является конкатенацией текущего массива и other, вызывается как a + other (где a и other оба являются arrays).

  b = array('i', [7, 8])
c = a + b
print(c)  # Вывод: array('i', [10, 2, 3, 4, 5, 6, 7, 8])
  

Нельзя вызывать __add__ прямо (a.__add__(other) не сработает), но a + other работает.

Метод __iadd__(other) конкатенирует массив с other на месте, вызывается как a += other (где a и other оба являются arrays). Это эквивалентно вызову extend(other).

  a += array('i', [9, 10])
print(a)  # Вывод: array('i', [10, 2, 3, 4, 5, 6, 9, 10])
  

Нельзя вызывать __iadd__ прямо (a.__iadd__(other) не сработает), но a += other работает.

Метод __repr__() Возвращает строковое представление массива, вызывается как str(a) или repr(a) (где a — это array). Возвращает строку вида "array(<type>, [<elements>])", где <type> — это литерал кода типа массива, а <elements> — это список элементов массива, разделённых запятыми.

  print(repr(a))  # Вывод: array('i', [10, 2, 3, 4, 5, 6, 9, 10])
  

Нельзя вызывать __repr__ прямо (a.__repr__() не сработает), но str(a) и repr(a) работают.