Spec-Zone.ru › Python 3.14

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

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

Код типа

Тип C

Тип Python

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

Примечания

'b'

signed char

int

1

'B'

unsigned char

int

1

'u'

wchar_t

символ Unicode

2

(1)

'w'

Py_UCS4

символ Unicode

4

(2)

'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'.

  2. Добавлено в версии 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])

См. также

Module struct

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

NumPy

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

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

Spec-Zone.ru

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