Найти тему

Что такое list comprehension? И когда применяется

List comprehension (списковое включение) — генератор списков. Это одна из самых приятных вещей в python, научившись писать которую, будешь применять её везде.

Функциональность list comprehension предоставляет более краткий и лаконичный синтаксис для создания списков на основе других наборов данных. Она имеет следующий синтаксис:

Синтаксис list comprehension состоит из следующих компонентов:

  • iterable: перебираемый источник данных, в качестве которого может выступать список, множество, последовательность, либо даже функция, которая возвращает набор данных, например, range()
  • item: извлекаемый из источника данных элемент
  • expression: выражение, которое возвращает некоторое значение. Это значение затем попадает в генерируемый список
  • condition: условие, которому должны соответствовать извлекаемые из источника данных элементы. Если элемент НЕ удовлетворяет условию, то он НЕ выбирается. Необязательный параметр.

Пожалуй Вы точно видели записи такого вида:

-2

Это и есть генератор списка. Что здесь происходит? Это обычный цикл for, только записан в более читаемом виде. В развёрнутом виде это выглядело бы так:

-3

Вот тут и видна разница в этих записях — генератор списка условно можно назвать синтаксическим сахаром для цикла for, но у них разное время выполнения. Под капотом генератор списка также использует цикл for но выигрывает по скорости из-за того, то не вызывает метод append у списка (подробности здесь).