Списковые включения
Для более естественной записи обработки списков в Python 2 была внесена новинка: списковые включения. Фактически это специальный сокращенный синтаксис для вложенных циклов for и условий if, на самом низком уровне которых определенное выражение добавляется к списку, например:
all_pairs = [] for i in range(5): for j in range(5): if i <= j: all_pairs.append((i, j))
Все это можно записать в виде спискового включения так:
all_pairs = [(i, j) for i in range(5) for j in range(5) if i <= j]
Как легко заметить, списковые включения позволяют заменить map() и filter() на более удобные для прочтения конструкции.
В следующей таблице приведены эквивалентные выражения в разных формах:
filter(f, lst) | [x for x in lst if f(x)] |
filter(None, lst) | [x for x in lst if x] |
map(f, lst) | [f(x) for x in lst] |