Spec-Zone.ru › Python 3.10

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

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

Код типа

Тип C

Тип Python

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

Примечания

'b'

signed char

int

1

'B'

unsigned char

int

1

'u'

wchar_t

Символ Unicode

2

(1)

'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, будет удалено в версии 4.0.

Фактическое представление значений определяется архитектурой машины (строго говоря, реализацией C). Фактический размер можно получить через атрибут array.itemsize.

Модуль определяет следующую запись:

array.typecodes

Строка со всеми доступными кодами типов.

Модуль определяет следующий тип:

class array.array(typecode[, initializer])

Новый массив, элементы которого ограничены typecode и инициализированы необязательным значением initializer, которое должно быть списком, объектом типа байтов или итерируемым объектом, содержащим элементы соответствующего типа.

Если задан список или строка, initializer передаётся в новый массив через методы fromlist(), frombytes() или fromunicode() (см. ниже) для добавления начальных элементов в массив. В противном случае итерируемый initializer передаётся методу extend().

Объекты массивов поддерживают обычные операции над последовательностями: индексирование, срезы, конкатенацию и умножение. При использовании присваивания среза присваиваемое значение должно быть объектом массива с тем же кодом типа; во всех остальных случаях генерируется исключение TypeError. Объекты массивов также реализуют интерфейс буфера и могут использоваться там, где поддерживаются объекты типа байтов.

Вызывает событие аудита аудита array.__new__ с аргументами typecode, initializer.

typecode

Символ 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(s)

Добавляет элементы из строки, интерпретируя строку как массив машинных значений (как если бы она была прочитана из файла с помощью метода 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'; в противном случае генерируется исключение 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 из массива.

reverse()

Изменить порядок элементов в массиве.

tobytes()

Преобразовать массив в массив машинных значений и вернуть представление в виде байтов (такая же последовательность байтов, которая была бы записана в файл методом tofile()).

В версии 3.2: tostring() переименовано в tobytes() для ясности.

tofile(f)

Записать все элементы (как машинные значения) в объект файла f.

tolist()

Преобразовать массив в обычный список с теми же элементами.

tounicode()

Преобразовать массив в строку Unicode. Массив должен быть массивом типа 'u'; в противном случае генерируется исключение ValueError. Используйте array.tobytes().decode(enc) для получения строки Unicode из массива другого типа.

При печати объекта массива или его преобразовании в строку он представляется как array(typecode, initializer). initializer опускается, если массив пустой; в противном случае это строка, если typecode — 'u', в противном случае — список чисел. Гарантируется, что строку можно преобразовать обратно в массив с тем же типом и значением с помощью eval(), если класс array импортирован с помощью from array import array. Примеры:

array('l')
array('u', 'hello \u2641')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14])

См. также

Module struct

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

Module xdrlib

Упаковка и распаковка данных внешнего представления данных (XDR), используемых в некоторых системах удалённых процедурных вызовов.

NumPy

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

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

Spec-Zone.ru

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