Включение — это компактный способ создать структуру данных из одного или более итераторов. Включения позволяют вам объединять циклы и условные проверки, не используя при этом громоздкий синтаксис. Если вы применяете включение, то можно сказать, что уже неплохо знаете Python. Иными словами, это одна из характерных особенностей данного языка.
Вы можете создать список целых чисел от 1 до 5, добавляя их туда по одному за раз, например, так:
>>>> number_list = []
>>>> number_list.append(1)
>>>> number_list.append(2)
>>>> number_list.append(3)
>>>> number_list.append(4)
>>>> number_list.append(5)
>>>> number_list
>[1, 2, 3, 4, 5]
Или же вы могли бы использовать итератор и функцию range():
>>>> number_list = []
>>>> for number in range(1, 6):
>…·····number_list.append(number)
>…
>>>> number_list
>[1, 2, 3, 4, 5]
Или же преобразовать в список сам результат работы функции range():
>>>> number_list = list(range(1, 6))
>>>> number_list
>[1, 2, 3, 4, 5]
Все эти подходы абсолютно корректны с точки зрения Python и сгенерируют одинаковый результат. Однако более характерным для Python является создание списка с помощью включения списка. Простейшая форма такого включения выглядит так:
>[выражение for элемент in итерабельный объект]
Вот так выглядит включение списка целых чисел:
>>>> number_list = [number for number in range(1,6)]
>>>> number_list
>[1, 2, 3, 4, 5]
В первой строке вам нужно, чтобы первая переменная number сформировала значения для списка: следует разместить результат работы цикла в переменной number_list. Вторая переменная number является частью цикла for. Чтобы показать, что первая переменная number является выражением, попробуем такой вариант:
>>>> number_list = [number-1 for number in range(1,6)]
>>>> number_list
>[0, 1, 2, 3, 4]
Включение списка перемещает цикл в квадратные скобки. Этот пример включения ненамного проще предыдущего, но это еще не все. Включение списка может содержать условное выражение, которое выглядит примерно так: