Деструктуризация (destructuring) – синтаксическая возможность "раскладывать" элементы списка (и не только) в отдельные переменные. Деструктуризация относится к необязательным, но очень приятным возможностям языка. Рассмотрим ее на примерах.
Представьте, что у нас есть список из двух элементов, которыми мы хотим оперировать в нашей программе. Самый простой вариант использования его элементов — постоянное обращение по индексу point[0]
и point[1]
.
point = [3, 5]
print(f`{point[0]}:{point[1]}`) # => 3:5
Индексы ничего не говорят о содержимом, и для понимания этого кода придется прикладывать дополнительные усилия. Гораздо лучше сначала присвоить эти значения переменным с хорошими именами. Тогда код станет читаемым:
x = point[0]
y = point[1]
print(f`{x}:{y}`) # => 3:5
Код стал значительно понятнее, хотя и длиннее. С помощью деструктуризации то же самое можно сделать короче:
[x, y] = point
# Слева список повторяет структуру правого списка
# но вместо значений используются идентификаторы
# они заполняются значениями, стоящими на тех же позициях в правом списке
# [x, y] = [3, 5]
# x = 3, y = 5
print(f`{x}:{y}`) # => 3:5
Деструктуризация работает на любом уровне вложенности. Например, с ее помощью можно извлекать данные из списков внутри списков:
[one, [two, three]] = [1, [2, 3]]
print(one, two, three) # => 1 2 3
Деструктуризация в циклах
Разложение списка можно использовать не только как отдельную инструкцию в коде, но и в циклах:
points = [
[4, 3],
[0, -3]
]
for x, y in points:
print([x, y])
# => [ 4, 3 ]
# => [ 0, -3 ]
В этом примере каждый элемент в цикле является списком. Без деструктуризации цикл выглядит так:
for item in points:
print(item)
Внутри for
переменная item
- это список, поэтому вместо нее можно подставить деструктуризацию [x, y]
.
Деструктуризация строк
В python строки ведут себя подобно спискам и их также можно деструктурировать.
[first, second, third] = 'two'
print(first) # => 't'
print(second) # => 'w'
print(third) # => 'o'
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.