array – Эффективные массивы числовых значений¶array – Efficient arrays of numeric values
Этот модуль определяет тип объекта, который может компактно представлять массив базовых значений: символов, целых чисел, чисел с плавающей запятой. Массивы являются изменяемыми последовательностями и ведут себя почти как списки, за исключением того, что тип хранимых объектов ограничен. Тип задаётся при создании объекта с помощью кода типа, который представляет собой один символ. Определены следующие коды типа:
Код типа |
Тип 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.
Фактическое представление значений определяется архитектурой машины (строго говоря, реализацией C). Фактический размер можно получить через атрибут array.itemsize.
Модуль определяет следующий элемент:
- array.typecodes¶
Строка со всеми доступными кодами типов.
Модуль определяет следующий тип:
- class array.array(typecode[, initializer])¶
Новый массив, элементы которого ограничены typecode и инициализируется из необязательного значения инициализатора, которое должно быть объектом
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()¶
“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. Используйтеarray.frombytes(unicodestring.encode(enc))для добавления данных Unicode в массив другого типа.
- index(value[, start[, stop]])¶
Возвращает наименьшее i, такое что i – это индекс первого вхождения value в массиве. Необязательные аргументы start и stop можно задать для поиска value в поддиапазоне массива. Возбуждает
ValueError, если value не найдено.Изменено в версии 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. Используйте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])