Модуль array
определяет тип объекта, который может компактно представлять массив значений базовых типов: символы, целые числа, числа с плавающей запятой.
Массивы array
являются типами и ведут себя очень похоже на списки, за исключением того, что тип хранящихся в них объектов ограничен. Тип указывается во время создания объекта с помощью кода типа, который представляет собой один символ. Список поддерживаемых типов и соответствующие им коды смотрите в разделе "Коды типов массива array()
".
Фактическое представление значений array
определяется архитектурой машины, строго говоря реализацией языка C. К фактическому размеру можно получить доступ через атрибут array.itemsize
.
array
определяет следующий тип:array.array(typecode[, initializer])
:Класс array.array()
создает новый массив, элементы которого ограничены typecode
и инициализируется из необязательного значения initializer
, которое должно быть списком, байтоподобным объектом или итерируемым по элементам объектом соответствующего типа.
Если задан список или строка, то инициализатор передается методу array.fromlist()
, array.frombytes()
или array.fromunicode()
нового массива для добавления начальных элементов в массив. В противном случае итеративный инициализатор передается в метод array.extended()
.
Создание экземпляра array.array()
вызывает событие аудита array.__new__
с аргументами typecode
, initializer
.
Смотрите какие методы определяет класс array.array()
в разделе "Методы и свойства класса array()
".
Объекты класса array.array()
поддерживают общие операции c последовательностями, такие как индексация, срез, объединение и т. д. При использовании среза, назначенное значение должно быть объектом массива с тем же typecode
. Во всех остальных случаях вызывается исключение TypeError
.
Объекты массива также реализуют интерфейс буфера и могут использоваться везде, где поддерживаются байтообразные объекты.
Когда объект класса array.array()
выводится на печать или преобразуется в строку, он представляется как array(typecode, initializer)
.
initializer
опускается, если массив пустой. typecode
равен 'u'
, то это строка.Строка гарантированно может быть преобразована обратно в массив с тем же типом и значением, используя функцию eval()
если класс array()
был импортирован с использованием конструкции from array import array
.
>>> from array import array >>> arr = array('l') >>> arr # array('l') >>> arr = array('u', 'hello \u2641') >>> arr # array('u', 'hello ♁') >>> arr = array('b', b'is array') >>> arr # array('b', [105, 115, 32, 97, 114, 114, 97, 121]) >>> arr = array('l', [1, 2, 3, 4, 5]) >>> arr # array('l', [1, 2, 3, 4, 5]) >>> arr = array('d', [1.0, 2.0, 3.14]) >>> arr # array('d', [1.0, 2.0, 3.14]) >>> str(arr) # "array('d', [1.0, 2.0, 3.14])" >>> print(arr) # array('d', [1.0, 2.0, 3.14])
Смотрите так же модуль struct
, при помощи которого можно осуществлять упаковку и распаковку разнородных двоичных данных.