Да, там происходит присваивание, как и в цикле for
. Никакая новая область не создается.
Это определенно ожидаемое поведение: в каждом цикле значение привязано к указанному вами имени. Например,
>>> x=0
>>> a=[1,54,4,2,32,234,5234,]
>>> [x for x in a if x>32]
[54, 234, 5234]
>>> x
5234
После того, как это было признано, кажется достаточно легко избежать: не используйте существующие имена для переменных в рамках понятий.