Распаковка в Python — это мощная техника, которая позволяет одновременно присваивать несколько значений переменным из списков и кортежей. Эта техника делает код более компактным и понятным, особенно при работе с коллекциями данных. В этой лекции мы сосредоточимся исключительно на распаковке в контексте списков и кортежей.
Распаковка позволяет извлекать значения из списка или кортежа и присваивать их переменным. Важно помнить, что количество переменных должно совпадать с количеством элементов в списке или кортеже.
Пример распаковки кортежа:
coordinates = (10, 20)
x, y = coordinates
print(f"x = {x}, y = {y}")
# Вывод: x = 10, y = 20
Здесь кортеж (10, 20)
распаковывается в переменные x
и y
.
Пример распаковки списка:
colors = ["red", "green", "blue"]
first_color, second_color, third_color = colors
print(first_color, second_color, third_color) # Вывод: red green blue
Список colors
распаковывается в три переменные.
*
Иногда количество элементов в списке или кортеже неизвестно заранее. В таких случаях можно использовать оператор *
, чтобы собрать остаток элементов в одну переменную.
Пример:
numbers = [1, 2, 3, 4, 5]
first, *middle, last = numbers
print(first) # Вывод: 1
print(middle) # Вывод: [2, 3, 4]
print(last) # Вывод: 5
В этом примере переменная middle
получает все элементы, кроме первого и последнего.
Распаковка поддерживает работу с вложенными списками и кортежами, что позволяет извлекать значения из более сложных структур.
Пример распаковки вложенного кортежа:
data = ("John", ("Doe", 30))
first_name, (last_name, age) = data
print(first_name) # Вывод: John
print(last_name) # Вывод: Doe
print(age) # Вывод: 30
Здесь кортеж внутри кортежа также распаковывается на отдельные переменные.
Пример распаковки вложенного списка:
matrix = [[1, 2, 3], [4, 5, 6]]
(row1, row2) = matrix
print(row1) # Вывод: [1, 2, 3]
print(row2) # Вывод: [4, 5, 6]
Здесь двумерный список распаковывается в две переменные, каждая из которых содержит строку матрицы.
Для работы с неопределённым количеством элементов можно использовать значение по умолчанию при распаковке.
Пример:
data = [1, 2]
a, b, *rest = data + [0] * (3 - len(data)) # Дополнение списка до трех элементов
print(a, b, rest) # Вывод: 1 2 [0]
Здесь добавляется значение по умолчанию, если исходный список не содержит достаточно элементов.
Распаковка на примере списков и кортежей — это полезный инструмент для упрощения работы с коллекциями данных. Она позволяет легко извлекать и распределять значения по переменным, что улучшает читаемость и структуру кода. Овладение этой техникой сделает ваш код более эффективным и понятным.