Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Кортежи Основы Python

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

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

Составные типы позволяют описывать сущности произвольной сложности, и поэтому приносят много пользы. В этом уроке мы познакомимся с кортежем — одним из составных типов данных в Python.

Что такое кортежи

Кортеж — это несколько значений, записанных через запятую. Вот несколько примеров:

rgb_colour = (255, 127, 64)
name_and_age = ('Bob', 42)
three_booleans = (True, False, True)
two_pairs_of_numbers = ((1, 2), (3, 4))

При этом кортеж может состоять из всего одного элемента:

tuple = (42,)  # Ставим запятую, чтобы указать на кортеж

Обратите внимание на запятую — ее нужно ставить даже после единственного элемента кортежа.

А теперь посмотрим на пример без запятой. В этом случае Python подумает, что мы хотим посчитать арифметическое выражение со скобками:

not_a_tuple = (42)  # Запятой нет, поэтому Python не считает это кортежем

Как изменить кортеж

Одна из особенностей кортежей в том, что это неизменяемый тип данных — то есть изменить кортеж после создания уже нельзя. Чтобы добавить новое значение, нужно создать новый кортеж.

При попытке изменить кортеж мы получим такую ошибку:

name_and_age = ('Bob', 42)
name_and_age[0] = 'Alice'
# Traceback (most recent call last)
# TypeError: 'tuple' object does not support item assignment
name_and_age # ('Bob', 42)

Как работать с кортежами

Кортежи полезны, когда нужно вернуть сразу несколько значений. Возьмем для примера функцию, которая возвращает два значения одновременно: результат деления нацело и остаток от деления.

В коде это выглядит так:

def div_mod(a, b):
    quotient = a // b
    modulo = a % b
    return (quotient, modulo)

div_mod(13, 4)  # (3, 1)

Как извлекать значения из кортежа

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

name_and_age = ('Bob', 42)

name_and_age[0]  # 'Bob'
name_and_age[1]  # 42

Также у кортежа есть длина, которую можно получить с помощью функции len():

tuple = (42,)  # (42,)
len(tuple)     # 1
pair = (1, 2)  # (1, 2)
len(pair)      # 2

Как разделить значения из кортежа

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

Чтобы упростить работу, можно разобрать кортеж:

name_and_age = ('Bob', 42)

(name, age) = name_and_age
name  # 'Bob'
age   # 42

Также этот процесс может называться деструктуризацией или распаковкой.

Таким же способом можно получать и сразу разбирать значения, которые возвращает функция:

(quotient, modulo) = div_mod(13, 4)

Соответственно, кортеж из одного элемента разбирается так:

(a,) = (42,)
a  # 42

Если после имени переменной не поставить запятую, то синтаксической ошибки не будет, но в переменную a кортеж запишется целиком — ничего не распакуется. Это логическая ошибка — мы получим не тот результат, который ожидали.

Кортежи и множественное присваивание

Кортежи легко собирать и разбирать, поэтому в Python удобно делать множественное присваивание. Смотрите:

(a, b, c) = (1, 2, 3)
a  # 1
b  # 2
c  # 3

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

a = 100
b = 'foo'

(a, b) = (b, a)
a  # 'foo'
b  # 100

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Открыть доступ

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

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

С нуля до разработчика. Возвращаем деньги, если не удалось найти работу.

Иконка программы Python-разработчик
Профессия
с нуля
Разработка веб-приложений на Django
8 декабря 10 месяцев
Иконка программы Аналитик данных
Профессия
В разработке с нуля
Сбор, анализ и интерпретация данных
дата определяется 8 месяцев

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и соглашаетесь с «Условиями использования»