Классических массивов по умолчанию в Python нет: их функции выполняют списки. Однако при необходимости функция создания массивов может быть вызвана. Поэтому утверждать, что массивы в Python отсутствуют, не совсем корректно — они всё же есть, просто добавляются путем импорта особой функции, о чём мы и будем говорить далее.
Технологии здесь. А вы с нами?
безопасно и с гарантией результата.
Предоставим грант до 1 000 000 ₽ на облачную
инфраструктуру и возьмем на себя весь процесс.
Списки и массивы
Главное различие между ними заключается в том, что списки могут хранить разнородные данные, а массивы — только данные одного типа. Например, только строки или только числа, причем отдельно целые и отдельно с плавающей запятой. Поэтому вот такой список в Python:
одновременно выполняет и функции массива. Как видим, элементы списка располагаются внутри квадратных скобок и перечисляются через запятую. Здесь мы взяли для примера строки. Рассмотрим еще один пример:
Это тоже список с функциями массива, поскольку все элементы здесь оформлены в виде строк. А теперь давайте напишем следующее:
Такой список уже не является классическим массивом, поскольку он объединяет разнородные элементы: целое число, строку, число с плавающей запятой и список. То есть получается, списки включают в себя функции массивов, но их собственные функции шире.
Здесь и возникает логичный вопрос: а зачем вызывать отдельный модуль для создания массивов, если можно пользоваться списками, которые включают в себя обе функции? На это есть всего одна, но веская причина: вызываемые массивы отличаются большей компактностью и меньшим потреблением памяти. Это полезно при работе с ресурсоемкими приложениями и при выполнении низкоуровневых операций.
Работа с массивами
Далее мы не будем рассматривать классические списки (lists), по которым написаны отдельные статьи, а сосредоточимся на работе с вызываемыми массивами. Они импортируются при помощи модуля array. Важное замечание: функция array позволяет создавать массивы только из целочисленных значений и чисел с плавающей запятой. Также пока поддерживаются символы Unicode, но поддержку Юникода планируется убрать в следующих версиях Python (начиная с 4.0). Поэтому сосредоточимся на значениях int и float.
Импорт модуля array
Итак, функция array делает доступными массивы в программе на Python. Вызывается она по-разному, удобнее сделать так (минимизирует число последующих ошибок):
Разумеется, эта команда, как и другие общие инструкции, должна быть указана в «шапке» кода, то есть в самом верху.
Создание массива
Чтобы создать массив, воспользуйтесь следующим шаблоном:
Рассмотрим каждый элемент массива подробнее:
array_name— имя (можно задать любое, помня о правилах создания переменных в Python);array— собственно функция;typecode— тип хранимых данных (для целочисленных значений обычно указываютi, а для чисел с плавающей запятой чаще используютd);[ ]— здесь через запятую перечисляются элементы массива.
Теперь попробуем создать простейший массив:
Получилось. Давайте создадим массив с числами с плавающей запятой:
А что будет, если в первом примере мы заменим целое число на число с плавающей запятой?
Предсказуемая ошибка, интерпретатор пишет, что ожидает целочисленный аргумент. С другой стороны:
Здесь мы представили последнее число в виде целого, однако ошибки не случилось: интерпретатор смог привести его к нужному виду в выводе.
Операции с массивами
С массивами, как и со списками, можно выполнять различные операции.
- Функция
len()позволяет подсчитать количество элементов:
- Также можно индексировать элементы и выводить нужные (для этого используется конструкция
print(array[number]):
Обратите внимание, что нумерация в Python всегда начинается с нуля, поэтому, чтобы вызвать первый элемент, мы вводим print(floats[0]). Соответственно, пятый элемент идет под номером 4. А что будет, если попробовать вызвать элемент за границами массива?
Интерпретатор выдает сообщение об ошибке и пишет, что индекс как раз и находится за пределами. Иногда может потребоваться отрицательная индексация. В этом случае отсчет начинается с последнего элемента, который получает индекс -1:
При отрицательной индексации модуль 5 у нас отрабатывается корректно, поскольку нумерация в этом случае начинается не с нуля.
- Доступны и операции с циклами. Вот так выводится последовательность элементов при помощи цикла
for:
- В отличие от строк, массивы и списки в Python изменяемы, поэтому допустимы и такие операции:
Значение второго элемента было 7.2, но мы присвоили ему новое — 8.2.
- Если значения элементов меняются, то, наверное, возможно добавить и новый элемент? Это делается при помощи метода
append():
Главное, чтобы добавляемый элемент относился к тому же типу данных, что и уже имеющиеся в массиве, иначе интерпретатор выдаст такую ошибку:
В типе ошибки указано, что вместо ожидаемого целочисленного значения было введено число с плавающей запятой. С другой стороны, преобразование введенного целого числа в число с плавающей запятой здесь снова возможно (но всё же так поступать не совсем корректно):
- Добавить в массив несколько элементов поможет метод
extend(). Вводим далее в интерпретаторе:
- А если нам нужно вставить новый элемент на какую-то определенную позицию? Для этого предназначен метод
insert(). Делается это так (используем всё тот же измененный массив сfloatsиз примера выше):
Мы вставили число 2.3 на вторую позицию (помним про нумерацию, которая начинается с нуля, поэтому вторая позиция будет под номером 1).
- Раз можно добавлять и вставлять элементы, то должен быть и метод их удаления. Он называется
remove():
А вот, что произойдет, если в массиве несколько элементов с одинаковым значением:
Удалилось только первое значение 11, а остальные остались в массиве. Для удаления элемента на конкретной позиции предназначен метод pop():
Число 11 на шестой позиции было удалено из массива.
Выгодные тарифы на облачные серверы
477 ₽/мес
657 ₽/мес
Заключение
Сегодня мы познакомились с массивами в Python, научились создавать их и выполнять различные операции с ними. Также выяснили, в чём преимущество вызываемых массивов перед стандартными списками, которые часто выполняют в Python функции обеих этих структур.
