Я играл с блоком кода, во время которого я наткнулся на неожиданное поведение Python.
Я определил список следующим образом:
a = [1, 2, 3]
Сделал другой список с al oop:
res = (item for item in a if a.count(item) > 0)
print(list(res)) # [1, 2, 3] -- as expected -- Consider this is line 1
Затем позже я изменил начальное значение первого списка:
a = [7, 2, 9]
Я не ожидал никаких изменений в res
, поскольку изменения, которые я внес в a
были после создания res
, но, к моему удивлению, значение res было изменено.
print(list(res)) # prints [] -- Consider this as line 2
Что еще шокирует, так это то, что результат печати зависит от оператора печати в строке 1, если Я комментирую оператор печати в строке 1, затем строка 2 выводит [2]
Кто-нибудь, пожалуйста, объясните мне, что здесь происходит?