Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 82

Включения

Включение — это компактный способ создать структуру данных из одного или более

итераторов. Включения позволяют вам объединять циклы и условные проверки,

не используя при этом громоздкий синтаксис. Если вы применяете включение, то

можно сказать, что уже неплохо знаете 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 условие]