array — Эффективные массивы числовых значений
Этот модуль определяет тип объекта, который позволяет компактно представлять массив базовых значений: символов, целых чисел и чисел с плавающей точкой. Массивы — изменяемые типы последовательностей и во многом ведут себя как списки, за исключением того, что тип хранящихся в них объектов ограничен. Тип задаётся при создании объекта с помощью кода типа — одного символа. Определены следующие коды типов:
Код типа | Тип C | Тип Python | Минимальный размер в байтах | Примечания |
|---|---|---|---|---|
| signed char | int | 1 | |
| unsigned char | int | 1 | |
| wchar_t | символ Unicode | 2 | (1) |
| Py_UCS4 | символ Unicode | 4 | (2) |
| signed short | int | 2 | |
| unsigned short | int | 2 | |
| signed int | int | 2 | |
| unsigned int | int | 2 | |
| signed long | int | 4 | |
| unsigned long | int | 4 | |
| signed long long | int | 8 | |
| unsigned long long | int | 8 | |
| float | float | 4 | |
| double | float | 8 |
Примечания:
-
В зависимости от платформы размер может составлять 16 или 32 бита.
Изменено в версии 3.9:
array('u')теперь используетwchar_tв качестве типа C вместо устаревшегоPy_UNICODE. Это изменение не влияет на поведение, посколькуPy_UNICODEявляется псевдонимомwchar_tначиная с Python 3.3.Устарело начиная с версии 3.3, будет удалено в версии 3.16: Перейдите на код типа
'w'. -
Добавлено в версии 3.13.
См. также
Модули ctypes и struct, а также сторонние модули, например numpy, используют похожие, но немного отличающиеся коды типов.
Фактическое представление значений определяется архитектурой машины (строго говоря, реализацией C). Фактический размер можно получить с помощью атрибута array.itemsize.
Модуль определяет следующий элемент:
-
array.typecodes -
Строка, содержащая все доступные коды типов.
Модуль определяет следующий тип:
-
class array.array(typecode[, initializer]) -
Новый массив, элементы которого ограничены значением typecode и который инициализируется необязательным значением initializer. Оно должно быть объектом
bytesилиbytearray, строкой Unicode либо итерируемым объектом, содержащим элементы соответствующего типа.Если передан объект
bytesилиbytearray, инициализатор передаётся методу нового массиваfrombytes(); если передана строка Unicode, инициализатор передаётся методуfromunicode(); в противном случае итератор инициализатора передаётся методуextend(), чтобы добавить начальные элементы в массив.Объекты массива поддерживают обычные операции с изменяемыми последовательностями: индексацию, срезы, конкатенацию и умножение. При присваивании срезу присваиваемое значение должно быть объектом массива с тем же кодом типа; во всех остальных случаях возникает исключение
TypeError. Объекты массива также реализуют буферный интерфейс и могут использоваться везде, где поддерживаются объекты, подобные байтам.Массивы являются обобщёнными относительно типа своего содержимого.
Вызывает событие аудита
array.__new__с аргументамиtypecode,initializer.-
typecode -
Символ кода типа, использованный для создания массива.
-
itemsize -
Длина в байтах одного элемента массива во внутреннем представлении.
-
append(value, /) -
Добавляет в конец массива новый элемент с указанным значением.
-
buffer_info() -
Возвращает кортеж
(address, length), содержащий текущий адрес в памяти и длину в элементах буфера, используемого для хранения содержимого массива. Размер буфера в байтах можно вычислить какarray.buffer_info()[1] * array.itemsize. Это иногда бывает полезно при работе с низкоуровневыми (и по своей сути небезопасными) интерфейсами ввода-вывода, которым требуются адреса в памяти, например с некоторыми операциямиioctl(). Возвращённые числа остаются действительными, пока существует массив и над ним не выполняются операции, изменяющие его длину.Примечание
При использовании объектов массива из кода на C или C++ (единственный способ эффективно применять эту информацию) разумнее использовать поддерживаемый объектами массива буферный интерфейс. Этот метод сохранён для обратной совместимости, и в новом коде его следует избегать. Буферный интерфейс описан в разделе Протокол буферов.
-
byteswap() -
Меняет порядок байтов всех элементов массива. Эта операция поддерживается только для значений размером 1, 2, 4 или 8 байт; для значений других типов возникает исключение
RuntimeError. Это полезно при чтении данных из файла, записанного на машине с другим порядком байтов.
-
count(value, /) -
Возвращает количество вхождений значения value в массиве.
-
extend(iterable, /) -
Добавляет элементы из iterable в конец массива. Если iterable — другой массив, его код типа должен точно совпадать; в противном случае возникает исключение
TypeError. Если iterable не является массивом, он должен быть итерируемым объектом, а его элементы должны иметь подходящий для добавления в массив тип.
-
frombytes(buffer, /) -
Добавляет элементы из объекта, подобного байтам, интерпретируя его содержимое как массив машинных значений (как если бы оно было прочитано из файла методом
fromfile()).Добавлено в версии 3.2: Для ясности
fromstring()переименован вfrombytes().
-
fromfile(f, n, /) -
Читает n элементов (как машинные значения) из файлового объекта f и добавляет их в конец массива. Если доступно меньше n элементов, возникает исключение
EOFError, но доступные элементы всё равно добавляются в массив.
-
fromlist(list, /) -
Добавляет элементы из списка. Это эквивалентно
for x in list: a.append(x), за исключением того, что при ошибке типа массив остаётся неизменным.
-
fromunicode(ustr, /) -
Добавляет в этот массив данные из указанной строки Unicode. Код типа массива должен быть
'u'или'w'; в противном случае возникает исключениеValueError. Для добавления данных Unicode в массив другого типа используйтеarray.frombytes(unicodestring.encode(enc)).
-
index(value[, start[, stop]]) -
Возвращает наименьшее i, являющееся индексом первого вхождения значения value в массиве. Необязательные аргументы start и stop можно указать, чтобы искать value в части массива. Если значение value не найдено, возникает исключение
ValueError.Изменено в версии 3.10: Добавлены необязательные параметры start и stop.
-
insert(index, value, /) -
Вставляет в массив новый элемент value перед позицией index. Отрицательные значения отсчитываются от конца массива.
-
pop(index=-1, /) -
Удаляет из массива элемент с индексом i и возвращает его. Необязательный аргумент по умолчанию равен
-1, поэтому по умолчанию удаляется и возвращается последний элемент.
-
remove(value, /) -
Удаляет из массива первое вхождение значения value.
-
clear() -
Удаляет из массива все элементы.
Добавлено в версии 3.13.
-
reverse() -
Меняет порядок элементов массива на обратный.
-
tobytes() -
Преобразует массив в массив машинных значений и возвращает его байтовое представление (ту же последовательность байтов, которая была бы записана в файл методом
tofile().)Добавлено в версии 3.2: Для ясности
tostring()переименован вtobytes().
-
tofile(f, /) -
Записывает все элементы (как машинные значения) в файловый объект f.
-
tolist() -
Преобразует массив в обычный список с теми же элементами.
-
tounicode() -
Преобразует массив в строку Unicode. Тип массива должен быть
'u'или'w'; в противном случае возникает исключениеValueError. Чтобы получить строку Unicode из массива другого типа, используйтеarray.tobytes().decode(enc).
-
Строковое представление объектов массива имеет вид array(typecode, initializer). Значение initializer опускается, если массив пуст; в противном случае это строка Unicode, если typecode равен 'u' или 'w', и список чисел в остальных случаях. Гарантируется, что строковое представление можно преобразовать обратно в массив того же типа и со значением тем же способом с помощью eval(), если класс array был импортирован с помощью from array import array. Переменные inf и nan также должны быть определены, если представление содержит соответствующие значения с плавающей точкой. Примеры:
array('l')
array('w', 'hello \u2641')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14, -inf, nan])
См. также
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/library/array.html