Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Деструктуризация Python: Списки

Деструктуризация (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'

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 28 ноября

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»