Python Glossary English

все Python 3astпонятие

ast.ListComp

выражения

Узел спискового включения [elt for … in … if …]: elt — выражение элемента, generators — список узлов comprehension.

Синтаксис

ast.ListComp(elt, generators)

Вложенные for идут в generators в том порядке, в каком написаны, — первый внешний: [y for x in m for y in x] даёт два comprehension, и цель второго ссылается на первый. Тернарный оператор в elt ('a if c else b for …') — это IfExp в elt, а не фильтр: фильтр — только if после for, он попадает в ifs. Цель цикла — Name с ctx=Store.

Примеры

import ast
lc = ast.parse('[y for x in m for y in x if y]', mode='eval').body
print(type(lc).__name__, len(lc.generators))  # → ListComp 2
print([g.target.id for g in lc.generators], len(lc.generators[1].ifs))  # → ['x', 'y'] 1
import ast
lc = ast.parse('[a if c else b for a in s]', mode='eval').body
print(type(lc.elt).__name__, lc.generators[0].ifs)  # → IfExp []

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности