在编写一些代码时,我注意到一些奇怪的东西,如果你使用这段代码:
data = ['a','b','c','d','e']
print("start", len(data))
while(len(data) > 0):
print("while", len(data))
for i in data:
print("for", i)
del data[data.index(i)]
print("end", len(data))
如果我执行它,它会返回:
('start', 5)
('while', 5)
('for', 'a')
('for', 'c')
('for', 'e')
('while', 2)
('for', 'b')
('while', 1)
('for', 'd')
('end', 0)
这不是我预期会发生的事情,这就是我认为会发生的事情:
('start', 5)
('while', 5)
('for', 'a')
('for', 'b')
('for', 'c')
('for', 'd')
('for', 'e')
('end', 0)
它们都不按规定运行列表(这很烦人,但完全出乎意料)并运行多个while循环。正如我在括号中所说的那样,按顺序返回的列表并不是真正的问题,它的多个while循环让我感到困惑。有人可以解释为什么会这样吗?解决方案也很愉快。
以下是trinket.io上演示代码的链接:https://trinket.io/python/46f433793d