Включение — это компактный способ создать структуру данных из одного или более
итераторов. Включения позволяют вам объединять циклы и условные проверки,
не используя при этом громоздкий синтаксис. Если вы применяете включение, то
можно сказать, что уже неплохо знаете 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]
114
Глава 4. Корочка Python: структуры кода
Или же преобразовать в список сам результат работы функции 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]
Включение списка перемещает цикл в квадратные скобки. Этот пример вклю-
чения ненамного проще предыдущего, но это еще не все. Включение списка может
содержать условное выражение, которое выглядит примерно так:
[ выражение for элемент in итерабельный объект if условие]