array — Эффективные массивы числовых значений
Этот модуль определяет тип объекта, который может компактно представлять массив основных значений: символов, целых чисел, чисел с плавающей точкой. Массивы являются последовательностями и ведут себя очень похоже на списки, за исключением того, что тип хранящихся в них объектов ограничен. Тип задаётся в момент создания объекта с помощью кода типа, который представляет собой одиночный символ. Определены следующие коды типов:
Код типа | Тип C | Тип Python | Минимальный размер в байтах | Примечания |
|---|---|---|---|---|
| signed char | int | 1 | |
| unsigned char | int | 1 | |
| wchar_t | Символ Юникода | 2 | (1) |
| Py_UCS4 | Символ Юникода | 4 | |
| 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'.
Фактическое представление значений определяется архитектурой машины (строго говоря, реализацией C). Фактический размер можно получить через атрибут array.itemsize.
Модуль определяет следующие элементы:
-
array.typecodes -
Строка со всеми доступными кодами типов.
Модуль определяет следующие типы:
-
class array.array(typecode[, initializer]) -
Новый массив, элементы которого ограничены typecode и инициализированы необязательным значением initializer, которое должно быть объектом
bytesилиbytearray, строкой Unicode или итерируемым объектом над элементами соответствующего типа.Если задан объект
bytesилиbytearray, initializer передаётся методу нового массиваfrombytes(); если задана строка Unicode, initializer передаётся методуfromunicode(); в противном случае итератор initializer передаётся методуextend()для добавления начальных элементов в массив.Объекты массивов поддерживают обычные операции с последовательностями: индексирование, срезы, конкатенацию и умножение. При использовании присваивания срезом присваиваемое значение должно быть объектом массива с тем же типом кода; во всех остальных случаях возникает
TypeError. Объекты массивов также реализуют интерфейс буфера и могут использоваться там, где поддерживаются объекты типа bytes-like.Вызывает событие аудита аудита
array.__new__с аргументамиtypecode,initializer.-
typecode -
Символ типа кода, используемый для создания массива.
-
itemsize -
Длина в байтах одного элемента массива во внутреннем представлении.
-
append(x) -
Добавить новый элемент со значением x в конец массива.
-
buffer_info() -
Возвращает кортеж
(address, length)с текущим адресом памяти и длиной в элементах буфера, используемого для хранения содержимого массива. Размер буфера памяти в байтах можно вычислить какarray.buffer_info()[1] * array.itemsize. Это иногда полезно при работе с низкоуровневыми (и по своей природе небезопасными) интерфейсами ввода-вывода, которым требуются адреса памяти, например, с определённымиioctl()операциями. Возвращаемые числа действительны, пока существует массив и к нему не применяются операции изменения длины.Примечание
При использовании объектов массивов из кода, написанного на C или C++ (единственный способ эффективного использования этой информации), более разумно использовать интерфейс буфера, поддерживаемый объектами массивов. Данный метод сохранён для обратной совместимости и следует избегать в новом коде. Интерфейс буфера документирован в Протоколе буфера.
-
byteswap() -
«Переставляет байты» всех элементов массива. Это поддерживается только для значений размером 1, 2, 4 или 8 байт; для других типов значений возникает
RuntimeError. Это полезно при чтении данных из файла, записанного на машине с другим порядком байтов.
-
count(x) -
Возвращает количество вхождений x в массиве.
-
extend(iterable) -
Добавляет элементы из iterable в конец массива. Если iterable — это другой массив, он должен иметь точно такой же тип кода; если нет, возникает
TypeError. Если iterable не является массивом, он должен быть итерируемым, а его элементы должны быть подходящего типа для добавления в массив.
-
frombytes(buffer) -
Добавляет элементы из объекта типа bytes-like, интерпретируя его содержимое как массив машинных значений (как если бы он был прочитан из файла с помощью метода
fromfile()).Добавлена в версии 3.2:
fromstring()переименована вfrombytes()для ясности.
-
fromfile(f, n) -
Считывает n элементов (как машинные значения) из объекта файла f и добавляет их в конец массива. Если доступно меньше n элементов, возникает
EOFError, но доступные элементы всё равно вставляются в массив.
-
fromlist(list) -
Добавляет элементы из списка. Это эквивалентно
for x in list: a.append(x), за исключением того, что если возникает ошибка типа, массив остаётся неизменным.
-
fromunicode(s) -
Расширяет этот массив данными из заданной строки Unicode. Массив должен иметь тип кода
'u'или'w'; в противном случае возникаетValueError. Используйтеarray.frombytes(unicodestring.encode(enc))для добавления данных Unicode в массив другого типа.
-
index(x[, start[, stop]]) -
Возвращает наименьшее i такое, что i — это индекс первого вхождения x в массиве. Необязательные аргументы start и stop могут быть указаны для поиска x в подпоследовательности массива. Возбуждает
ValueError, если x не найден.Изменено в версии 3.10: Добавлены необязательные параметры start и stop.
-
insert(i, x) -
Вставить новый элемент со значением x в массив перед позицией i. Отрицательные значения рассматриваются как относительные к концу массива.
-
pop([i]) -
Удаляет элемент с индексом i из массива и возвращает его. Необязательный аргумент по умолчанию равен
-1, так что по умолчанию удаляется и возвращается последний элемент.
-
remove(x) -
Удаляет первое вхождение x из массива.
-
clear() -
Удаляет все элементы из массива.
Добавлена в версии 3.13.
-
reverse() -
Изменяет порядок элементов в массиве.
-
tobytes() -
Преобразует массив в массив машинных значений и возвращает байтовое представление (такая же последовательность байтов, которая была бы записана в файл методом
tofile()).Добавлена в версии 3.2:
tostring()переименована вtobytes()для ясности.
-
tofile(f) -
Записывает все элементы (как машинные значения) в объект файла f.
-
tolist() -
Преобразует массив в обычный список с теми же элементами.
-
tounicode() -
Преобразует массив в строку Unicode. Массив должен иметь тип
'u'или'w'; в противном случае возникаетValueError. Используйтеarray.tobytes().decode(enc)для получения строки Unicode из массива другого типа.
-
Строковое представление объектов массивов имеет вид 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–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/array.html