Если я что-то делаю со списком, он записывает локальную переменную:
i = 0
test = any([i == 2 for i in xrange(10)])
print i
Отпечатает "9". Однако, если я использую генератор, он не пишет локальную переменную:
i = 0
test = any(i == 2 for i in xrange(10))
print i
Отпечатает "0".
Есть ли веская причина для этой разницы? Является ли это конструктивным решением или просто случайным побочным продуктом того, как реализуются генераторы и списки? Лично мне показалось бы лучше, если бы в контекстах списков не записывались локальные переменные.