Типизированные массивы в Python

Введение

В языке программирования Python для хранения каких-либо объектов можно использовать списки. Поскольку списки в Python являются не типизированными, то вполне нормально написать что-то в этом роде:

Пример создания списка с различными типами
Пример создания списка с различными типами

Однако такая "свобода", в свою очередь, ведет к более высоким затратам памяти. Для минимизации этих затрат, можно воспользоваться классом array из модуля array.

array.array

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

Массивы, создаваемые на основе класса array.array, ведут себя аналогично спискам, однако, в отличие от последних, являются типизированными (ограниченны одним типом данных). Это позволяет более компактно хранить содержащиеся в них данные.

Указываем тип данных

Для того чтобы задать тип данных, необходимо указать type code во время создания объекта. Этот код представляет собой один символ, каждый такой символ перечислен в таблице ниже.

Список type code
Список type code

Создание массива

Массив может быть создан следующим образом:

from array import array
arr = array('b', [1, 2, 3,])

Ниже показано использование типизированного массива с использованием всех перечисленных в таблице типов. В качестве значений, указаны минимум и максимум для данного типа.

Вывод в кносоль

Простые операции

Давайте рассмотрим несколько простых операций, которые можно выполнять с данными массивами.

1. Обратиться к элементу, можно так же как и в списках - по индексу:

2. Вставка и добавление

3. Удаление и возврат элемента по индексу

4. Удаление и возврат последнего элемента

5. Удаление элемента по значению. Удаляется первый найденный элемент

Чтобы ознакомится со всеми операциями, обратитесь к официальной документации.

Вывод

Таким образом, array.array - это отличный выбор, когда вам нужно хранить большое количество простых однотипных данных.

Источники

1. The Python Standard Library

2. Дэн Бейдер, "Чистый Python. Тонкости программирования для профи" С. 164 - 165