2014-03-27 23 views
0

我試圖修改一個包含超過一百行代碼的循環函數。爲什麼「列表中的項目」循環只能走半路?

如果我在python中有一個循環遍歷列表,爲什麼for item in list:循環只能完成一半?它不應該保持循環,直到所有項目被彈出?

例如,如果我有這樣的名單:

l1 = [1,2,3,4,5,6] 


    for item in l1: 
     l1.pop(0) 
     print l1 

不管列表有多少項包含,它只會結束時,列表的50%已經被彈出:

輸出上面的代碼:

[2, 3, 4, 5, 6] 
[3, 4, 5, 6] 
[4, 5, 6] 

Process finished with exit code 0 

我還可以在彈出列表中每個項目在不改變for item in l1:循環?

+5

您在修改列表的同時迭代它。在SO_中可能出現一個_lot問題的重複。) –

+1

爲什麼在循環中修改列表? –

+1

也打印出'item',你應該能夠弄清楚。 –

回答

0

你可以從原來的一個創建列表和流行的副本:

In [1]: l1 = [1,2,3,4,5,6] 

In [2]: for item in l1[:]: 
    ...:  l1.pop(0) 
    ...:  print l1 
    ...:  
[2, 3, 4, 5, 6] 
[3, 4, 5, 6] 
[4, 5, 6] 
[5, 6] 
[6] 
[] 

但是,這肯定是不優雅。

相關問題