Найти в Дзене
Питон и я

Массивы в Python

Как и в других языках программирования, в Python тоже есть массивы для хранения наборов объектов. Все элементы массивов нумеруются, к каждому элементу можно получить доступ по индексу. Обращаем внимание, что нумерация элементов начинается с нуля, а не с единицы. Первый элемент имеет индекс 0. Но, в отличие от других языков программирования, массивы могут быть разных типов. Рассмотрим их по очереди. Списки Список - изменяемых набор объектов. Объектом может быть любой тип данных – число, строка, логический тип, а также массив. Также в одном массиве можно хранить данных разных типов. Давайте запустим командную строку, в ней интерпретатор Python и попробуем создать массив. >>> arr = [1, 2, 3]
>>> arr += [1]
>>> print(arr)
[1, 2, 3, 1]
>>> arr += [[5, 6]]
>>> print(arr)
[1, 2, 3, 1, [5, 6]]
>>> print(arr[4])
[5, 6]
>>> Мы создали массив, добавили новый элемент, затем вывели массив на печать. Получили 4 элемента. Затем мы добавили ещё один элемент – массив и снова вывели на печать. Ви
Оглавление
Источник изображения - собственное
Источник изображения - собственное

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

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

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

Списки

Список - изменяемых набор объектов. Объектом может быть любой тип данных – число, строка, логический тип, а также массив. Также в одном массиве можно хранить данных разных типов. Давайте запустим командную строку, в ней интерпретатор Python и попробуем создать массив.

>>> arr = [1, 2, 3]
>>> arr += [1]
>>> print(arr)
[1, 2, 3, 1]
>>> arr += [[5, 6]]
>>> print(arr)
[1, 2, 3, 1, [5, 6]]
>>> print(arr[4])
[5, 6]
>>>

Мы создали массив, добавили новый элемент, затем вывели массив на печать. Получили 4 элемента. Затем мы добавили ещё один элемент – массив и снова вывели на печать. Видим, что один массив содержит второй. При попытке вывести элемент по индексу мы получили последний элемент, несмотря, что индекс указывался 4, а элементов 5 – напоминаю, что нумерация идёт с нуля.

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

>>> arr_2 = arr
>>> arr_2 += ['test']
>>> print(arr)
[1, 2, 3, 1, [5, 6], 'test']
>>>

Здест мы видим, что при попытке изменить второй массив меняется и первый. Чтобы такого избежать, избегайте подобного присваивания значений. Если всё же нужно присвоить двум массивам одинаковые начальные значения, делайте это раздельно. Проверить, является ли массив ссылкой на другой, можно при помощи конструкции is:

>>> arr_3 = [1, 2, 3]
>>> arr_4 = [1, 2, 3]
>>> print(arr_3 is arr_4)
False
>>> print(arr is arr_2)
True
>>>

Кортежи

Кортежи являются неизменяемыми данными. Можно получить элемент по индексу, но вы не сможете его изменить. Если список мы указывали задавали в квадратных скобках, то кортеж надо в круглых.

>>> arr_5 = (1, 2, 3, 4)
>>> print(arr_5)
(1, 2, 3, 4)
>>> arr_5[2] = 10
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> print(arr_5[2])
3
>>>

Что мы здесь видим? При попытке изменить одинр из элементов получаем сообщение, что этот тип данных не поддерживает присваивание. Для списка эта операция допускается:

>>> arr[2] = 15
>>> print(arr)
[1, 2, 15, 1, [5, 6], 'test']
>>>

Также обращаю внимание, что независимо от типа массива при доступе к элементу по индексу индекс всегда указывается в квадратных скобках.

Множества

Множества подобны спискам и кортежам, они могут быть как изменяемыми, так и неизменяемыми. Разница в том, что множество хранит лишь уникальные значения. Давайте посмотрим пример – попробуем создать массив и множество с одинаковым набором данных:

>>> arr_6 = [1, 2, 4, 5, 1, 7, 2, 9, 4]
>>> arr_7 = set([1, 2, 4, 5, 1, 7, 2, 9, 4])
>>> print(arr_6)
[1, 2, 4, 5, 1, 7, 2, 9, 4]
>>> print(arr_7)
{1, 2, 4, 5, 7, 9}
>>>

Мы видим, что при создании множества дубликаты отсеялись и остались только уникальные значения.

Диапазоны

Диапазоны – наборы чисел, заранее сформированные на основе трёх параметров: начального и конечного значений и шага между числами. Если шаг не указывать, он по умолчанию будет равным 1. Отметим два важных момента:

  1. Конечное значение в диапазон не входит. При формировании диапазона от 1 до 10 с шагом 1 мы получим только 9 значений. Когда будем рассматривать циклы, диапазон значений для цикла также не будет включать конечное значение.
  2. Простой командой print мы не выведем на экран диапазон. Здесь надо использовать более сложную конструкцию.

Посмотрим пример. Обращаю внимание, что при вводе последней команды Enter надо будет нажать дважды.

>>> arr_8 = range(1, 10)
>>> print(arr_8)
range(1, 10)
>>> for i in arr_8: print(i)
...
1
2
3
4
5
6
7
8
9
>>>

В следующий раз мы рассмотрим операции над массивами.