Найти в Дзене
КУЗИНОБИТ

Урок 10: Кортежи (Tuple) в Python.

Добро пожаловать на десятый урок нашего курса по программированию на Python! В предыдущих уроках мы познакомились с основными типами данных, условными операторами, циклами и функциями. Сегодня мы углубимся в работу с кортежами (tuple) в Python — неизменяемыми структурами данных, которые позволяют эффективно хранить и обрабатывать коллекции элементов. В данную статью добавлены ссылки на GitHub в каждом примере. Также общая ссылка на GitHub для данного урока: Кортеж (tuple) в Python — это упорядоченная коллекция элементов, которая, в отличие от списка, является неизменяемой. Это означает, что после создания кортежа вы не можете изменять его элементы (добавлять, удалять или изменять значения). Кортежи создаются с помощью круглых скобок () или просто перечислением элементов через запятую. # Создание кортежей empty_tuple = () # Пустой кортеж single_element_tuple = (1,) # Кортеж с одним элементом (обязательно запятая) numbers = (1, 2, 3, 4, 5) mixed = (1, "два", 3.0, True) Важно: Дл
Оглавление

Добро пожаловать на десятый урок нашего курса по программированию на Python! В предыдущих уроках мы познакомились с основными типами данных, условными операторами, циклами и функциями. Сегодня мы углубимся в работу с кортежами (tuple) в Python — неизменяемыми структурами данных, которые позволяют эффективно хранить и обрабатывать коллекции элементов.

В данную статью добавлены ссылки на GitHub в каждом примере. Также общая ссылка на GitHub для данного урока:
python_course/lesson_10 at main · kuzinobit/python_course

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

Кортеж (tuple) в Python — это упорядоченная коллекция элементов, которая, в отличие от списка, является неизменяемой. Это означает, что после создания кортежа вы не можете изменять его элементы (добавлять, удалять или изменять значения).

Создание кортежа:

python_course/lesson_10/create_tuple.py at main · kuzinobit/python_course
Пример создания кортежей.
Пример создания кортежей.

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

# Создание кортежей
empty_tuple = ()
# Пустой кортеж
single_element_tuple = (1,)
# Кортеж с одним элементом (обязательно запятая)
numbers = (1, 2, 3, 4, 5)
mixed = (1, "два", 3.0, True)

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

Особенности кортежей:

  • Неизменяемость: После создания кортежа его нельзя изменить.
  • Упорядоченность: Элементы имеют определенный порядок и доступны по индексам.
  • Разные типы данных: Кортеж может содержать элементы разных типов.
  • Меньший размер: Кортежи занимают меньше места в памяти по сравнению со списками.

Доступ к элементам кортежа.

Индексация:

Элементы кортежа доступны по индексам, начиная с 0.

python_course/lesson_10/index_tuple.py at main · kuzinobit/python_course
Пример получения значения по индексу в кортеже.
Пример получения значения по индексу в кортеже.
# Индексация кортежей
fruits = ("яблоко", "банан", "вишня")
print(fruits[0]) # "яблоко"
print(fruits[1]) # "банан"
print(fruits[2]) # "вишня"

Отрицательные индексы:

Отрицательные индексы позволяют обращаться к элементам с конца кортежа.

python_course/lesson_10/negative_index_tuple.py at main · kuzinobit/python_course
Пример получения значения по отрицательному индексу.
Пример получения значения по отрицательному индексу.
# Отрицательные индексы
print(fruits[-1]) # "вишня"
print(fruits[-2]) # "банан"
print(fruits[-3]) # "яблоко"

Срезы кортежей:

Как и со списками, вы можете получать срезы кортежей.

python_course/lesson_10/slice_tuple.py at main · kuzinobit/python_course
Примеры срезов в кортежах.
Примеры срезов в кортежах.
# Срезы кортежей
numbers = (1, 2, 3, 4, 5, 6, 7, 8, 9)
print(numbers[2:5]) # (3, 4, 5)
print(numbers[:4]) # (1, 2, 3, 4)
print(numbers[5:]) # (6, 7, 8, 9)
print(numbers[::2]) # (1, 3, 5, 7, 9)
print(numbers[::-1]) # (9, 8, 7, 6, 5, 4, 3, 2, 1)

Операции с кортежами.

Объединение кортежей:

Вы можете объединять кортежи с помощью оператора +.

python_course/lesson_10/unity_tuple.py at main · kuzinobit/python_course
Пример объединения кортежей.
Пример объединения кортежей.
# Объединение кортежей
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined = tuple1 + tuple2
print(combined) # (1, 2, 3, 4, 5, 6)

Повторение кортежа:

Оператор * повторяет кортеж заданное количество раз.

python_course/lesson_10/repeat_tuple.py at main · kuzinobit/python_course
Пример повторения цикла.
Пример повторения цикла.
# Повторение кортежа
numbers = (1, 2, 3)
repeated = numbers * 3
print(repeated) # (1, 2, 3, 1, 2, 3, 1, 2, 3)

Проверка наличия элемента:

Оператор in используется для проверки наличия элемента в кортеже.

python_course/lesson_10/finder_element_tuple.py at main · kuzinobit/python_course
Пример проверки наличия элемента в кортеже.
Пример проверки наличия элемента в кортеже.
# Проверка наличия элемента
fruits = ("яблоко", "банан", "вишня")
print("банан" in fruits) # True
print("груша" in fruits) # False

Длина кортежа:

Функция len() возвращает количество элементов в кортеже.

python_course/lesson_10/len_tuple.py at main · kuzinobit/python_course
Пример получения длины кортежа.
Пример получения длины кортежа.
# Длина кортежа
print(len(fruits)) # 3

Неизменяемость кортежей.

Попытка изменить элемент кортежа приведет к ошибке.

python_course/lesson_10/immutability_tuple.py at main · kuzinobit/python_course
Пример возникающего исключения при попытке изменить кортеж.
Пример возникающего исключения при попытке изменить кортеж.
# Попытка изменения кортежа
numbers = (1, 2, 3)
numbers[0] = 10 # TypeError: 'tuple' object does not support item assignment

Методы кортежей.

Кортежи имеют ограниченное количество методов по сравнению со списками из-за их неизменяемости.

Метод count():

Возвращает количество вхождений заданного элемента в кортеже.

python_course/lesson_10/count_tuple.py at main · kuzinobit/python_course
Пример использования метода count().
Пример использования метода count().
# Метод count()
numbers = (1, 2, 3, 2, 4, 2)
count_of_twos = numbers.count(2)
print(count_of_twos) # 3

Метод index():

Возвращает индекс первого вхождения заданного элемента.

python_course/lesson_10/func_index_tuple.py at main · kuzinobit/python_course
Пример использования метода index().
Пример использования метода index().
# Метод index()
index_of_three = numbers.index(3)
print(index_of_three) # 2

Распаковка кортежей.

Вы можете распаковать кортеж в отдельные переменные.

python_course/lesson_10/unpacking_tuple.py at main · kuzinobit/python_course
Пример распаковки кортежей.
Пример распаковки кортежей.
# Распаковка кортежа
point = (2, 3)
x, y = point
print(f"x = {x}, y = {y}") # x = 2, y = 3

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

python_course/lesson_10/unpacking_tuple_m.py at main · kuzinobit/python_course
Пример использования распаковки кортежей с использованием *.
Пример использования распаковки кортежей с использованием *.
# Распаковка с использованием *
numbers = (1, 2, 3, 4, 5)
a, b, *rest = numbers
print(a) # 1
print(b) # 2
print(rest) # [3, 4, 5]

Кортежи как возвращаемые значения функций.

Кортежи часто используются для возврата нескольких значений из функции.

python_course/lesson_10/return_multi_tuple.py at main · kuzinobit/python_course
Пример получения нескольких значений.
Пример получения нескольких значений.
# Функция, возвращающая кортеж
def get_min_max(numbers):
return min(numbers), max(numbers)
result = get_min_max([1, 2, 3, 4, 5])
min_value, max_value = result
print(f"Min: {min_value}, Max: {max_value}") # Min: 1, Max: 5

Использование кортежей в качестве ключей словарей.

Поскольку кортежи неизменяемы, они могут использоваться в качестве ключей словарей (*о словарях вы узнаете в следующем уроке).

python_course/lesson_10/return_multi_tuple.py at main · kuzinobit/python_course
Применение кортежа в качестве ключа словаря.
Применение кортежа в качестве ключа словаря.
# Кортежи как ключи словаря
coordinates = {}
coordinates[(0, 0)] = "Начало координат"
coordinates[(1, 2)] = "Точка A"
print(coordinates) # {(0, 0): 'Начало координат', (1, 2): 'Точка A'}

Практические примеры.

Пример 1. Сортировка списка точек по координатам:

python_course/lesson_10/example_1.py at main · kuzinobit/python_course
Пример сортировки списка точек по координатам.
Пример сортировки списка точек по координатам.
# Пример сортировки списка точек
points = [(1, 2), (3, 1), (0, 0), (2, 2)]
sorted_points = sorted(points)
print(sorted_points) # [(0, 0), (1, 2), (2, 2), (3, 1)]

Пример 2. Обмен значений переменных:

python_course/lesson_10/example_2.py at main · kuzinobit/python_course
Пример обмена значений между переменными.
Пример обмена значений между переменными.
# Обмен значений без временной переменной
a = 5
b = 10
a, b = b, a
print(f"a = {a}, b = {b}") # a = 10, b = 5

Пример 3. Функция с произвольным количеством аргументов:

python_course/lesson_10/example_3.py at main · kuzinobit/python_course
Пример функции с произвольным количеством аргументов.
Пример функции с произвольным количеством аргументов.
# Функция, принимающая произвольное количество аргументов
def average(*args):
return sum(args) / len(args)
print(average(1, 2, 3)) # 2.0
print(average(4, 5, 6, 7, 8)) # 6.0

Заключение десятого урока.

Сегодня мы изучили:

  • Что такое кортежи и их особенности.
  • Как создавать и использовать кортежи в Python.
  • Доступ к элементам кортежа и срезы.
  • Основные операции и методы кортежей.
  • Распаковку кортежей и их использование в функциях.
  • Практические примеры применения кортежей.

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

Домашняя работа.

Задание 1: Создание и использование кортежа.

  1. Создайте кортеж months, содержащий названия всех 12 месяцев.
  2. Выведите на экран месяц под номером, введенным пользователем (номер месяца от 1 до 12).

Задание 2: Максимальное и минимальное значение.

Напишите функцию find_min_max(numbers), которая принимает кортеж чисел и возвращает кортеж, содержащий минимальное и максимальное значения.

Задание 3*: Подсчет частоты элементов.

Напишите программу, которая принимает строку от пользователя и подсчитывает частоту каждого символа, сохраняя результат в словаре. Используйте кортежи для хранения пар (символ, частота) и выведите их в отсортированном порядке.

Вопросы для самопроверки:

  1. Чем кортеж отличается от списка в Python?
  2. Как создать кортеж с одним элементом?
  3. Можно ли изменить элементы кортежа после его создания?
  4. Как распаковать кортеж в отдельные переменные?
  5. В каких случаях предпочтительно использовать кортеж вместо списка?

Свои домашние работы отправляйте на почтовый ящик homework@kuzinobit.com.

Поздравляю с успешным освоением десятого урока! В следующем уроке мы познакомимся со словарями (dictionary) в Python — еще одной важной структурой данных, которая позволяет хранить данные в формате "ключ-значение". Это откроет новые возможности для организации и обработки информации в ваших программах.

Друзья, ставьте свои лайки и подписывайтесь на канал. Дальше будет только интереснее! До новых встреч!