Добро пожаловать на десятый урок нашего курса по программированию на Python! В предыдущих уроках мы познакомились с основными типами данных, условными операторами, циклами и функциями. Сегодня мы углубимся в работу с кортежами (tuple) в Python — неизменяемыми структурами данных, которые позволяют эффективно хранить и обрабатывать коллекции элементов.
В данную статью добавлены ссылки на GitHub в каждом примере. Также общая ссылка на GitHub для данного урока:
Что такое кортеж?
Кортеж (tuple) в Python — это упорядоченная коллекция элементов, которая, в отличие от списка, является неизменяемой. Это означает, что после создания кортежа вы не можете изменять его элементы (добавлять, удалять или изменять значения).
Создание кортежа:
Кортежи создаются с помощью круглых скобок () или просто перечислением элементов через запятую.
# Создание кортежей
empty_tuple = ()
# Пустой кортеж
single_element_tuple = (1,)
# Кортеж с одним элементом (обязательно запятая)
numbers = (1, 2, 3, 4, 5)
mixed = (1, "два", 3.0, True)
Важно: Для создания кортежа с одним элементом необходимо поставить запятую после элемента: (1,), иначе Python воспримет это как обычные скобки вокруг объекта.
Особенности кортежей:
- Неизменяемость: После создания кортежа его нельзя изменить.
- Упорядоченность: Элементы имеют определенный порядок и доступны по индексам.
- Разные типы данных: Кортеж может содержать элементы разных типов.
- Меньший размер: Кортежи занимают меньше места в памяти по сравнению со списками.
Доступ к элементам кортежа.
Индексация:
Элементы кортежа доступны по индексам, начиная с 0.
# Индексация кортежей
fruits = ("яблоко", "банан", "вишня")
print(fruits[0]) # "яблоко"
print(fruits[1]) # "банан"
print(fruits[2]) # "вишня"
Отрицательные индексы:
Отрицательные индексы позволяют обращаться к элементам с конца кортежа.
# Отрицательные индексы
print(fruits[-1]) # "вишня"
print(fruits[-2]) # "банан"
print(fruits[-3]) # "яблоко"
Срезы кортежей:
Как и со списками, вы можете получать срезы кортежей.
# Срезы кортежей
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)
Операции с кортежами.
Объединение кортежей:
Вы можете объединять кортежи с помощью оператора +.
# Объединение кортежей
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
combined = tuple1 + tuple2
print(combined) # (1, 2, 3, 4, 5, 6)
Повторение кортежа:
Оператор * повторяет кортеж заданное количество раз.
# Повторение кортежа
numbers = (1, 2, 3)
repeated = numbers * 3
print(repeated) # (1, 2, 3, 1, 2, 3, 1, 2, 3)
Проверка наличия элемента:
Оператор in используется для проверки наличия элемента в кортеже.
# Проверка наличия элемента
fruits = ("яблоко", "банан", "вишня")
print("банан" in fruits) # True
print("груша" in fruits) # False
Длина кортежа:
Функция len() возвращает количество элементов в кортеже.
# Длина кортежа
print(len(fruits)) # 3
Неизменяемость кортежей.
Попытка изменить элемент кортежа приведет к ошибке.
# Попытка изменения кортежа
numbers = (1, 2, 3)
numbers[0] = 10 # TypeError: 'tuple' object does not support item assignment
Методы кортежей.
Кортежи имеют ограниченное количество методов по сравнению со списками из-за их неизменяемости.
Метод count():
Возвращает количество вхождений заданного элемента в кортеже.
# Метод count()
numbers = (1, 2, 3, 2, 4, 2)
count_of_twos = numbers.count(2)
print(count_of_twos) # 3
Метод index():
Возвращает индекс первого вхождения заданного элемента.
# Метод index()
index_of_three = numbers.index(3)
print(index_of_three) # 2
Распаковка кортежей.
Вы можете распаковать кортеж в отдельные переменные.
# Распаковка кортежа
point = (2, 3)
x, y = point
print(f"x = {x}, y = {y}") # x = 2, y = 3
Если количество переменных и элементов не совпадает, можно использовать * для сбора оставшихся элементов.
# Распаковка с использованием *
numbers = (1, 2, 3, 4, 5)
a, b, *rest = numbers
print(a) # 1
print(b) # 2
print(rest) # [3, 4, 5]
Кортежи как возвращаемые значения функций.
Кортежи часто используются для возврата нескольких значений из функции.
# Функция, возвращающая кортеж
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
Использование кортежей в качестве ключей словарей.
Поскольку кортежи неизменяемы, они могут использоваться в качестве ключей словарей (*о словарях вы узнаете в следующем уроке).
# Кортежи как ключи словаря
coordinates = {}
coordinates[(0, 0)] = "Начало координат"
coordinates[(1, 2)] = "Точка A"
print(coordinates) # {(0, 0): 'Начало координат', (1, 2): 'Точка A'}
Практические примеры.
Пример 1. Сортировка списка точек по координатам:
# Пример сортировки списка точек
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. Обмен значений переменных:
# Обмен значений без временной переменной
a = 5
b = 10
a, b = b, a
print(f"a = {a}, b = {b}") # a = 10, b = 5
Пример 3. Функция с произвольным количеством аргументов:
# Функция, принимающая произвольное количество аргументов
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: Создание и использование кортежа.
- Создайте кортеж months, содержащий названия всех 12 месяцев.
- Выведите на экран месяц под номером, введенным пользователем (номер месяца от 1 до 12).
Задание 2: Максимальное и минимальное значение.
Напишите функцию find_min_max(numbers), которая принимает кортеж чисел и возвращает кортеж, содержащий минимальное и максимальное значения.
Задание 3*: Подсчет частоты элементов.
Напишите программу, которая принимает строку от пользователя и подсчитывает частоту каждого символа, сохраняя результат в словаре. Используйте кортежи для хранения пар (символ, частота) и выведите их в отсортированном порядке.
Вопросы для самопроверки:
- Чем кортеж отличается от списка в Python?
- Как создать кортеж с одним элементом?
- Можно ли изменить элементы кортежа после его создания?
- Как распаковать кортеж в отдельные переменные?
- В каких случаях предпочтительно использовать кортеж вместо списка?
Свои домашние работы отправляйте на почтовый ящик homework@kuzinobit.com.
Поздравляю с успешным освоением десятого урока! В следующем уроке мы познакомимся со словарями (dictionary) в Python — еще одной важной структурой данных, которая позволяет хранить данные в формате "ключ-значение". Это откроет новые возможности для организации и обработки информации в ваших программах.
Друзья, ставьте свои лайки и подписывайтесь на канал. Дальше будет только интереснее! До новых встреч!