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