Основы Python
Теория: Кортежи
До этого момента мы встречались со строками, числами, булевыми значениями. Все это — простые типы данных, то есть они не включают в себя данные других типов.
Но часто в программировании приходится работать с несколькими типами данных одновременно. Именно поэтому во многих языках программирования есть составные типы — они могут включать в себя данные других типов.
Составные типы позволяют описывать сущности произвольной сложности, поэтому приносят много пользы. В этом уроке мы познакомимся с кортежем — одним из составных типов данных в Python.
Что такое кортежи
Кортеж (tuple) — это несколько значений, записанных через запятую. Вот несколько примеров:
При этом кортеж может состоять всего из одного элемента:
Обратите внимание на запятую — ее нужно ставить даже после единственного элемента кортежа.
А теперь посмотрим на пример без запятой. В этом случае Python подумает, что мы хотим вычислить значение арифметического выражения со скобками:
Такая запись кортежа тоже допускается, скобки указывать не обязательно:
Как изменить кортеж
Одна из особенностей кортежей в том, что это неизменяемый тип данных — то есть изменить кортеж после создания уже нельзя. Чтобы добавить новое значение, нужно создать новый кортеж.
При попытке изменить кортеж мы получим такую ошибку:
Как работать с кортежами
Кортежи полезны, когда нужно вернуть сразу несколько значений. Возьмем для примера функцию, которая возвращает два значения одновременно: результат деления нацело и остаток от деления.
В коде это выглядит так:
Как извлекать значения из кортежа
Выше мы научились создавать кортежи, а теперь попробуем извлекать значения из них. Для этого достаточно обратиться к элементу кортежа по индексу:
Также у кортежа есть длина, которую можно получить с помощью функции len():
Как разделить значения из кортежа
Часто кортежи содержат значения разных типов. Сложно запомнить, каким индексом обозначается каждое значение.
Чтобы упростить работу, можно разобрать кортеж:
Также этот процесс может называться деструктуризацией или распаковкой.
Таким же способом можно получать и сразу разбирать значения, которые возвращает функция:
Соответственно, кортеж из одного элемента разбирается так:
Если после имени переменной не поставить запятую, то синтаксической ошибки не будет, но в переменную a кортеж запишется целиком — ничего не распакуется. Это логическая ошибка — мы получим не тот результат, который ожидали.
Кортежи и множественное присваивание
Кортежи легко собирать и разбирать, поэтому в Python удобно делать множественное присваивание. Смотрите:
Используя множественное присваивание, можно обменять значения между двумя переменными. Так это выглядит:
Кортежи как аргументы функций
Также кортежи можно передавать в качестве аргументов в функцию и разбирать уже внутри нее:








