Их простейшая форма предусматривает указание накапливающего выражения и одиночной конструкции for:
[ выражение for цель in итерируемый_объект ]
Несмотря на необязательность всех остальных частей, они позволяют выражать более развитые итерации — в списковом включении допускается записывать любое количество вложенных циклов
for, каждое из которых может иметь необязательную ассоциированную проверку if, действующую в качестве фильтра. Общая структура списковых включений выглядит следующим образом: [ выражение for цель1 in итерируемый_объект1 if условие1
for цель2 in итерируемый_объект2 if условие2 . . .
for цельN in итерируемый_объектN if условиеN ]
Когда конструкции
for вкладываются внутри спискового включения, они работают подобно эквивалентным вложенным операторам цикла for:res = [х + у for х in [0, 1, 2] for у in [100, 200, 300]]
res # [100, 200, 300, 101, 201, 301, 102, 202, 302]
Эффект будет таким же, как у показанного ниже существенно более многословного
эквивалента:
res = []
for x in [0, 1, 2]:
for у in [100, 200, 300]:
res.append(x + y)
print(res) # [100, 200, 300, 101, 201, 301, 102, 202, 302]