📦 Кортежи (tuple)
Кортеж - это неизменяемый список. После создания кортежа нельзя добавлять, удалять или изменять его элементы.
🔹 1. Создание кортежа
Кортежи создаются с помощью круглых скобок () или просто через запятую.
🔹 Синтаксис:
# С круглыми скобками
numbers = (1, 2, 3, 4, 5)
# Без скобок (тоже работает)
colors = "red", "green", "blue"
# Пустой кортеж
empty = ()
# Кортеж с одним элементом (нужна запятая!)
single = (42,) # Без запятой это просто число в скобках
⚠️ Важно: Для кортежа из одного элемента обязательна запятая: (5,). Иначе Python воспримет это как число в скобках.
🔹 Примеры:
fruits = ("яблоко", "банан", "груша")
print(fruits) # ('яблоко', 'банан', 'груша')
# Кортеж может хранить разные типы данных
mixed = (1, "Hello", 3.14, True)
print(mixed) # (1, 'Hello', 3.14, True)
🔍 2. Доступ к элементам
Обращение к элементам кортежа работает так же, как у списков - через индексы.
animals = ("кот", "собака", "попугай")
print(animals[0]) # кот
print(animals[1]) # собака
print(animals[-1]) # попугай (последний элемент)
🔹 Срезы (slicing):
numbers = (0, 1, 2, 3, 4, 5)
print(numbers[1:4]) # (1, 2, 3)
print(numbers[:3]) # (0, 1, 2)
print(numbers[3:]) # (3, 4, 5)
print(numbers[::2]) # (0, 2, 4) - каждый второй
🔒 3. Неизменяемость кортежей
Главное отличие кортежа от списка - его нельзя изменить после создания.
coords = (10, 20)
# ❌ Попытка изменить элемент вызовет ошибку
coords[0] = 15 # TypeError: 'tuple' object does not support item assignment
📌 Почему это полезно? - Кортежи защищают данные от случайных изменений - Они работают быстрее списков - Их можно использовать как ключи словаря (списки нельзя)
🔄 4. Перебор кортежа
Кортежи можно перебирать циклом for, как списки:
weekdays = ("пн", "вт", "ср", "чт", "пт")
for day in weekdays:
print(day)
Вывод:
пн
вт
ср
чт
пт
🔹 С индексами:
colors = ("красный", "синий", "зелёный")
for i in range(len(colors)):
print(f"{i}: {colors[i]}")
Вывод:
0: красный
1: синий
2: зелёный
📊 5. Методы кортежей
У кортежей всего два метода:
| Метод | Описание | Пример |
|---|---|---|
.count(x) |
Считает, сколько раз встречается x |
(1,2,1).count(1) → 2 |
.index(x) |
Возвращает индекс первого x |
(5,7,9).index(7) → 1 |
🔹 Примеры:
numbers = (1, 2, 3, 2, 2, 5)
print(numbers.count(2)) # 3 (двойка встречается 3 раза)
print(numbers.index(3)) # 2 (тройка находится на индексе 2)
🔄 6. Распаковка кортежа
Кортежи можно распаковывать - присваивать их элементы нескольким переменным сразу.
point = (100, 200)
x, y = point
print(x) # 100
print(y) # 200
🔹 Обмен значений переменных:
a = 5
b = 10
# Обмен без временной переменной!
a, b = b, a
print(a) # 10
print(b) # 5
🔹 Распаковка со звёздочкой *:
numbers = (1, 2, 3, 4, 5)
first, *middle, last = numbers
print(first) # 1
print(middle) # [2, 3, 4] (список!)
print(last) # 5
🆚 7. Кортеж vs Список
| Особенность | Кортеж () |
Список [] |
|---|---|---|
| Изменяемость | ❌ Нельзя изменить | ✅ Можно изменять |
| Скорость | ⚡ Быстрее | 🐢 Медленнее |
| Методы | 2 метода | Много методов |
| Использование | Постоянные данные | Изменяемые данные |
🔹 Когда использовать кортежи:
- Координаты:
(x, y) - RGB цвета:
(255, 128, 0) - Данные, которые не должны меняться
- Возврат нескольких значений из функции
🔄 8. Преобразование типов
# Список → Кортеж
my_list = [1, 2, 3]
my_tuple = tuple(my_list)
print(my_tuple) # (1, 2, 3)
# Кортеж → Список
my_tuple = (4, 5, 6)
my_list = list(my_tuple)
print(my_list) # [4, 5, 6]
# Строка → Кортеж
text = "Hello"
letters = tuple(text)
print(letters) # ('H', 'e', 'l', 'l', 'o')
🎓 Задания
🧪 1) Координаты точки
Создайте кортеж point с координатами (15, 25).
Распакуйте кортеж в переменные x и y, затем выведите на экран:
x = 15
y = 25
Решение:
point = (15, 25)
x, y = point
print(f"x = {x}")
print(f"y = {y}")
🧪 2) Подсчёт вхождений
Дан кортеж с оценками студента:
grades = (5, 4, 5, 3, 5, 4, 5, 5)
Подсчитайте, сколько раз встречается оценка 5, и выведите результат:
Пятёрок: 5
📌 Подсказка: используйте метод .count()
Решение:
grades = (5, 4, 5, 3, 5, 4, 5, 5)
count = grades.count(5)
print(f"Пятёрок: {count}")
🧪 3) Поиск максимального элемента
Дан кортеж с числами:
numbers = (23, 45, 12, 67, 34, 89, 15)
Найдите и выведите максимальное число из кортежа.
Пример вывода:
Максимальное число: 89
📌 Подсказка: используйте функцию max() или переберите кортеж циклом
Решение:
numbers = (23, 45, 12, 67, 34, 89, 15)
# Способ 1: встроенная функция
print(f"Максимальное число: {max(numbers)}")
# Способ 2: через цикл
maximum = numbers[0]
for num in numbers:
if num > maximum:
maximum = num
print(f"Максимальное число: {maximum}")
🧪 4) Обмен значений
Даны две переменные:
a = "Python"
b = "Java"
Поменяйте их значения местами без использования третьей переменной.
После обмена выведите:
a = Java
b = Python
📌 Подсказка: используйте распаковку кортежа
Решение:
a = "Python"
b = "Java"
a, b = b, a
print(f"a = {a}")
print(f"b = {b}")