Spec-Zone.ru › Python 3.13

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.

Фактическое представление значений определяется архитектурой машины (строго говоря, реализацией 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(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)

Добавляет элементы из объекта, подобного байтам, интерпретируя его содержимое как массив машинных значений (так же, как если бы он был прочитан из файла методом 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. Для добавления данных Unicode в массив другого типа используйте array.frombytes(unicodestring.encode(enc)).

index(x[, start[, stop]])

Возвращает наименьшее i, являющееся индексом первого вхождения x в массив. Необязательные аргументы start и stop можно указать, чтобы искать x в части массива. Если x не найден, вызывает исключение ValueError.

Изменено в версии 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. Чтобы получить строку 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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/array.html

Spec-Zone.ru

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