Модуль array
Компактные массивы базовых типов
Этот модуль определяет тип объекта, который может компактно представлять массив базовых значений: символов, целых чисел, чисел с плавающей точкой. Массивы являются типами последовательностей и ведут себя очень похоже на списки, за исключением того, что тип объектов, хранимых в них, ограничен. Тип задается при создании объекта с помощью кода типа, который представляет собой один символ.
Поддерживаемые коды форматов:
Код | Тип 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)
работают.