我正在玩弄一段代码,在此期间我偶然发现了 Python 的一些意外行为。
我定义了一个列表如下:
a = [1, 2, 3]
用循环制作另一个列表:
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我所做的更改不会有任何变化,但令我惊讶的是,res 的值发生了变化。ares
print(list(res)) # prints [] -- Consider this as line 2
更令人震惊的是打印的结果取决于第1行的打印语句,如果我在第1行注释掉打印语句然后第2行打印[2]
有人可以向我解释这里发生了什么吗?
开心每一天1111
吃鸡游戏
相关分类