Python嵌套For和意外行为

时间:2017-01-06 16:22:06

标签: python loops for-loop while-loop

在编写一些代码时,我注意到一些奇怪的东西,如果你使用这段代码:

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

0 个答案:

没有答案