Как создать массив в Python — Simple-Server

    Команда Simple-Server
    03.06.2026
    7 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    Главное различие между ними заключается в том, что списки могут хранить разнородные данные, а массивы — только данные одного типа. Например, только строки или только числа, причем отдельно целые и отдельно с плавающей запятой. Поэтому вот такой список в Python:

    list = ['element1', 'element2', 'element3']

    одновременно выполняет и функции массива. Как видим, элементы списка располагаются внутри квадратных скобок и перечисляются через запятую. Здесь мы взяли для примера строки. Рассмотрим еще один пример:

    >>> different = ['55', 'string', '32.5', ['list_in_list', '55', 'string', '32.5']] >>> print(different) ['55', 'string', '32.5', ['list_in_list', '55', 'string', '32.5']]

    Это тоже список с функциями массива, поскольку все элементы здесь оформлены в виде строк. А теперь давайте напишем следующее:

    >>> different2 = [55, 'string', 32.5, ['list_in_list', '55', 'string', '32*8']] >>> print(different2) [55, 'string', 32.5, ['list_in_list', '55', 'string', '32*8']]

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

    Здесь и возникает логичный вопрос: а зачем вызывать отдельный модуль для создания массивов, если можно пользоваться списками, которые включают в себя обе функции? На это есть всего одна, но веская причина: вызываемые массивы отличаются большей компактностью и меньшим потреблением памяти. Это полезно при работе с ресурсоемкими приложениями и при выполнении низкоуровневых операций.

    Далее мы не будем рассматривать классические списки (lists), по которым написаны отдельные статьи, а сосредоточимся на работе с вызываемыми массивами. Они импортируются при помощи модуля array. Важное замечание: функция array позволяет создавать массивы только из целочисленных значений и чисел с плавающей запятой. Также пока поддерживаются символы Unicode, но поддержку Юникода планируется убрать в следующих версиях Python (начиная с 4.0). Поэтому сосредоточимся на значениях int и float.

    Итак, функция array делает доступными массивы в программе на Python. Вызывается она по-разному, удобнее сделать так (минимизирует число последующих ошибок):

    Разумеется, эта команда, как и другие общие инструкции, должна быть указана в «шапке» кода, то есть в самом верху.

    Чтобы создать массив, воспользуйтесь следующим шаблоном:

    array_name = array(typecode,[ ])

    Рассмотрим каждый элемент массива подробнее:

    • array_name __ — имя (можно задать любое, помня о правилах создания переменных в Python);
    • array __ — собственно функция;
    • typecode __ — тип хранимых данных (для целочисленных значений обычно указывают i, а для чисел с плавающей запятой чаще используют d);
    • [ ]__ — здесь через запятую перечисляются элементы массива.

    Теперь попробуем создать простейший массив:

    >>> from array import * >>> integers = array('i',[1,2,3,4,5]) >>> print(integers) array('i', [1, 2, 3, 4, 5])

    Получилось. Давайте создадим массив с числами с плавающей запятой:

    >>> from array import * >>> floats = array('d',[3.5,7.2,5.3,9.5,4.0]) >>> print(floats) array('d', [3.5, 7.2, 5.3, 9.5, 4.0])

    А что будет, если в первом примере мы заменим целое число на число с плавающей запятой?

    >>> integers = array('i',[1,2,3,4,5.2]) Traceback (most recent call last): File "<pyshell#26>", line 1, in <module> integers = array('i',[1,2,3,4,5.2]) TypeError: integer argument expected, got float

    Предсказуемая ошибка, интерпретатор пишет, что ожидает целочисленный аргумент. С другой стороны:

    >>> floats = array('d',[3.5,7.2,5.3,9.5,4]) >>> print(floats) array('d', [3.5, 7.2, 5.3, 9.5, 4.0])

    Здесь мы представили последнее число в виде целого, однако ошибки не случилось: интерпретатор смог привести его к нужному виду в выводе.

    С массивами, как и со списками, можно выполнять различные операции.

    • Функция len() позволяет подсчитать количество элементов:
    >>> integers = array('i',[1,2,3,4,5]) >>> print(len(integers)) 5
    • Также можно индексировать элементы и выводить нужные (для этого используется конструкция print(array[number]):
    >>> floats = array('d',[3.5,7.2,5.3,9.5,4.0]) >>> print(floats[0]) 3.5 >>> print(floats[4]) 4.0 >>> print(floats[1]) 7.2

    Обратите внимание, что нумерация в Python всегда начинается с нуля, поэтому, чтобы вызвать первый элемент, мы вводим _print(floats[0])_. Соответственно, пятый элемент идет под номером 4. А что будет, если попробовать вызвать элемент за границами массива?

    >>> print(floats[5]) Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> print(floats[5]) IndexError: array index out of range

    Интерпретатор выдает сообщение об ошибке и пишет, что индекс как раз и находится за пределами. Иногда может потребоваться отрицательная индексация. В этом случае отсчет начинается с последнего элемента, который получает индекс -1:

    >>> print(floats[-1]) 4.0 >>> print(floats[-2]) 9.5 >>> print(floats[-5]) 3.5

    При отрицательной индексации модуль 5 у нас отрабатывается корректно, поскольку нумерация в этом случае начинается не с нуля.

    • Доступны и операции с циклами. Вот так выводится последовательность элементов при помощи цикла for:
    >>> floats = array('d',[3.5,7.2,5.3,9.5,4.0]) >>> for d in floats: print(d) 3.5 7.2 5.3 9.5 4.0
    • В отличие от строк, массивы и списки в Python изменяемы, поэтому допустимы и такие операции:
    >>> floats[1] = 8.2 >>> print(floats) array('d', [3.5, 8.2, 5.3, 9.5, 4.0])

    Значение второго элемента было 7.2, но мы присвоили ему новое — 8.2.

    • Если значения элементов меняются, то, наверное, возможно добавить и новый элемент? Это делается при помощи метода append():
    >>> integers = array('i',[1,2,3,4,5]) >>> integers.append(6) >>> print(integers) array('i', [1, 2, 3, 4, 5, 6])

    Главное, чтобы добавляемый элемент относился к тому же типу данных, что и уже имеющиеся в массиве, иначе интерпретатор выдаст такую ошибку:

    >>> integers.append(7.0) Traceback (most recent call last): File "<pyshell#22>", line 1, in <module> integers.append(7.0) TypeError: integer argument expected, got float

    В типе ошибки указано, что вместо ожидаемого целочисленного значения было введено число с плавающей запятой. С другой стороны, преобразование введенного целого числа в число с плавающей запятой здесь снова возможно (но всё же так поступать не совсем корректно):

    >>> floats = array('d',[3.5,7.2,5.3,9.5,4.0]) >>> floats.append(8) >>> print(floats) array('d', [3.5, 7.2, 5.3, 9.5, 4.0, 8.0])
    • Добавить в массив несколько элементов поможет метод extend(). Вводим далее в интерпретаторе:
    >>> floats.extend([4.5,5.7,6.9]) >>> print(floats) array('d', [3.5, 7.2, 5.3, 9.5, 4.0, 8.0, 4.5, 5.7, 6.9])
    • А если нам нужно вставить новый элемент на какую-то определенную позицию? Для этого предназначен метод insert(). Делается это так (используем всё тот же измененный массив с _floats_ из примера выше):
    >>> floats.insert(1,2.3) >>> print(floats) array('d', [3.5, 2.3, 7.2, 5.3, 9.5, 4.0, 8.0, 4.5, 5.7, 6.9])

    Мы вставили число 2.3 на вторую позицию (помним про нумерацию, которая начинается с нуля, поэтому вторая позиция будет под номером 1).

    • Раз можно добавлять и вставлять элементы, то должен быть и метод их удаления. Он называется remove():
    >>> floats.remove(7.2) >>> print(floats) array('d', [3.5, 2.3, 5.3, 9.5, 4.0, 8.0, 4.5, 5.7, 6.9])

    А вот, что произойдет, если в массиве несколько элементов с одинаковым значением:

    >>> integers = array('i',[11,12,13,14,15,11,11]) >>> integers.remove(11) >>> print(integers) array('i', [12, 13, 14, 15, 11, 11])

    Удалилось только первое значение 11, а остальные остались в массиве. Для удаления элемента на конкретной позиции предназначен метод pop():

    >>> integers = array('i',[11,12,13,14,15,11,11]) >>> integers.pop(5) 11 >>> print(integers) array('i', [11, 12, 13, 14, 15, 11])

    Число 11 на шестой позиции было удалено из массива.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны