Итераторы и генераторы

Генераторы списков собирают результаты применения произвольного выражения к элементам последовательности и возвращают их в виде нового списка. Синтаксически генераторы списков заключаются в квадратные скобки (чтобы показать, что они конструируют списки).

Пример

>> [x ** 2 for x in range(10)]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

[x for x in range(5) if x % 2 == 0]

В общем виде генераторы списков выглядят следую-
щим образом:

[ expression for target1 in sequence1 [if condition]
for target2 in sequence2 [if condition] …
for targetN in sequenceN [if condition] ]

Пример

>>> res = [x + y for x in [0, 1, 2] for y in [100, 200, 300]]
>>> res
[100, 200, 300, 101, 201, 301, 102, 202, 302]