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

Создадим новое включение, которое создает список, состоящий только из четных

чисел, расположенных в диапазоне от 1 до 5 (помните, что выражение number % 2

имеет значение True для четных чисел и False для нечетных):

>>> a_list = [number for number in range(1,6) if number % 2 == 1]

>>> a_list

[1, 3, 5]

Теперь включение выглядит чуть более компактно, чем его традиционный

аналог:

>>> a_list = []

>>> for number in range(1,6):

... if number % 2 == 1:

... a_list.append(number)

...

>>> a_list

[1, 3, 5]

Включения

115

Наконец, точно так же, как и в случае вложенных циклов, можно написать более

чем один набор операторов for ... в соответствующем выделении. Чтобы проде-

монстрировать это, сначала создадим старый добрый вложенный цикл и выведем

на экран результат:

>>> rows = range(1,4)

>>> cols = range(1,3)

>>> for row in rows:

... for col in cols:

... print(row, col)

...

1 1

1 2

2 1

2 2

3 1

3 2

Теперь воспользуемся включением и присвоим его переменной cells, создавая

тем самым список кортежей (row, col):

>>> rows = range(1,4)

>>> cols = range(1,3)

>>> cells = [(row, col) for row in rows for col in cols]

>>> for cell in cells:

... print(cell)

...

(1, 1)

(1, 2)

(2, 1)

(2, 2)

(3, 1)

(3, 2)

Кстати, вы можете воспользоваться распаковкой кортежа, чтобы выдернуть

значения row и col из каждого кортежа по мере итерирования по списку cells:

>>> for row, col in cells: