Spec-Zone.ru › Python 3.13

array — Эффективные массивы числовых значений

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

Код типа

Тип C

Тип Python

Минимальный размер в байтах

Примечания

'b'

signed char

int

1

'B'

unsigned char

int

1

'u'

wchar_t

Символ Юникода

2

(1)

'w'

Py_UCS4

Символ Юникода

4

'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

Примечания:

  1. Может быть 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])

См. также

Module struct

Упаковку и распаковку разнородных двоичных данных.

NumPy

Пакет NumPy определяет другой тип массива.

© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/array.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API