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

... print(row, col)

...

1 1

1 2

2 1

2 2

3 1

3 2

Фрагменты for row ... и for col ... во включении также могут иметь свои про-

верки if.

116

Глава 4. Корочка Python: структуры кода

Включение словаря

Для словарей также можно создать включение. Простейшая его форма выглядит

привычно:

{ выражение_ключа: выражение_значения for выражение in итерабельный объект }

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

верки if и несколько операторов for:

>>> word = 'letters'

>>> letter_counts = {letter: word.count(letter) for letter in word}

>>> letter_counts

{'l': 1, 'e': 2, 't': 2, 'r': 1, 's': 1}

Мы запускаем цикл, проходя по каждой из семи букв в строке letters, и счита-

ем, сколько раз появляется эта буква. Два наших вызова word.count(letter) — это

лишь пустая трата времени, поскольку нам нужно подсчитать буквы «e» и «t» два

раза. Но когда мы считаем буквы «e» во второй раз, то не причиняем вреда, по-

скольку лишь заменяем уже существующую запись в словаре; то же относится

и к подсчету букв «t». Следующий способ решения задачи более характерен для

Python:

>>> word = 'letters'

>>> letter_counts = {letter: word.count(letter) for letter in set(word)}

>>> letter_counts

{'t': 2, 'l': 1, 'e': 2, 'r': 1, 's': 1}

Ключи словаря располагаются в ином, чем в предыдущем примере, порядке,

поскольку итерирование по результату работы функции set(word) возвращает

буквы в другом порядке, нежели итерирование по строке word.

Включение множества

Никто не хочет оказаться обиженным, поэтому даже у множеств есть включения.

Простейшая версия выглядит как включение списка или словаря, которые вы толь-

ко что видели:

{ выражение for выражение in итерабельный объект}

Более длинные версии (проверки if, множественные операторы for) также до-

ступны для множеств:

>>> a_set = {number for number in range(1,6) if number % 3 == 1}

>>> a_set

{1, 4}

Включения

117

Включение генератора

Для кортежей не существует включений. Вы могли подумать, что замена квадрат-