当我在一个程序上工作时,我在代码中看到了一个奇怪的行为。这就是我所看到的。
>>> l = [1,2,3,4,5,6,7,8]
>>> g = []
>>> for i in l:
... g.append(l.pop())
...
>>> l
[1, 2, 3, 4]
>>> g
[8, 7, 6, 5]
>>>
列表g
应该包含列表l
的所有元素!但为什么只考虑一半的名单呢?
免责声明:我不是要复制列表或反转列表。这是我在处理其他事情时发现的事情。
答案 0 :(得分:11)
你通常不应该这样做!
更改你正在循环的Iterable并不好!
<强>解释强>
如您所见,l.pop()
始终采用l
的最后一项
g.append()
现在将弹出的项目添加到g
的末尾
4次运行后l
没有任何项目。
首次运行:
i = v
l = [1,2,3,4,5,6,7]
g = [8]
第二次运行:
i = v
l = [1,2,3,4,5,6]
g = [8,7]
第三次运行:
i = v
l = [1,2,3,4,5]
g = [8,7,6]
第四次运行:
i = v
l = [1,2,3,4]
g = [8,7,6,5]
现在我们在l
的末尾,我们停止循环