array – Эффективные массивы числовых значений¶array – Efficient arrays of numeric values
Этот модуль определяет тип объекта, который может компактно представлять массив базовых значений: символов, целых чисел, чисел с плавающей запятой. Массивы являются типами последовательностей и ведут себя очень похоже на списки, за исключением того, что тип хранимых в них объектов ограничен. Тип задаётся при создании объекта с помощью кода типа, который представляет собой один символ. Определены следующие коды типа:
Код типа |
Тип C |
Тип Python |
Минимальный размер в байтах |
Примечания |
|---|---|---|---|---|
|
signed char |
int |
1 |
|
|
unsigned char |
int |
1 |
|
|
wchar_t |
символ Unicode |
2 |
(1) |
|
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, будет удалено в версии 4.0.
Фактическое представление значений определяется архитектурой машины (строго говоря, реализацией C). Фактический размер можно получить через атрибут array.itemsize.
Модуль определяет следующий элемент:
- array.typecodes¶
Строка со всеми доступными кодами типов.
Модуль определяет следующий тип:
- class array.array(typecode[, initializer])¶
Новый массив, элементы которого ограничены typecode и инициализируется из необязательного значения инициализатора, которое должно быть объектом
bytesилиbytearray, строкой Unicode или итерируемым объектом, возвращающим элементы соответствующего типа.Если передан объект
bytesилиbytearray, инициализатор передаётся методуfrombytes()нового массива; если передана строка Unicode, инициализатор передаётся методуfromunicode(); в противном случае итератор инициализатора передаётся методуextend()для добавления начальных элементов в массив.Объекты array поддерживают обычные операции последовательностей: индексацию, срезы, конкатенацию и умножение. При использовании присваивания среза присваиваемое значение должно быть объектом array с тем же кодом типа; во всех остальных случаях возбуждается
TypeError. Объекты array также реализуют буферный интерфейс и могут использоваться везде, где поддерживаются байтоподобные объекты.Возбуждает событие аудита
array.__new__с аргументамиtypecode,initializer.- typecode¶
Символ кода типа, использованный для создания массива.
- itemsize¶
Длина в байтах одного элемента массива во внутреннем представлении.
- append(x)¶
Добавляет новый элемент со значением x в конец массива.
- buffer_info()¶
Возвращает кортеж
(address, length), содержащий текущий адрес памяти и длину в элементах буфера, используемого для хранения содержимого массива. Размер буфера памяти в байтах можно вычислить какarray.buffer_info()[1] * array.itemsize. Это иногда полезно при работе с низкоуровневыми (и по своей природе небезопасными) интерфейсами ввода-вывода, требующими адреса памяти, такими как некоторые операцииioctl(). Возвращаемые числа действительны, пока существует массив и к нему не применяются операции, изменяющие длину.Примечание
При использовании объектов массива из кода, написанного на C или C++ (единственный способ эффективно использовать эту информацию), более разумно использовать буферный интерфейс, поддерживаемый объектами массива. Этот метод сохраняется для обратной совместимости, и его следует избегать в новом коде. Буферный интерфейс описан в Протоколе буфера.
- byteswap()¶
“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'; в противном случае возбуждается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).
Инициализатор опускается, если массив пуст, в противном случае это
строка Unicode, если код типа равен 'u', иначе это
список чисел.
Гарантируется, что строковое представление можно преобразовать обратно в
массив с тем же типом и значением с помощью eval(), при условии, что
класс array был импортирован с помощью from array import array.
Переменные inf и nan также должны быть определены, если массив содержит
соответствующие значения с плавающей запятой.
Примеры:
array('l')
array('u', 'hello \u2641')
array('l', [1, 2, 3, 4, 5])
array('d', [1.0, 2.0, 3.14, -inf, nan])