python" for ... in ..."当在循环体中使用移除时工作?

时间:2017-03-14 02:27:47

标签: python loops for-loop

在这个Python片段中:

l = [10,20,30,40,50]
for i in l:
    l.remove(i)
    print(i)
print(l)

输出结果为:

10
30
50
[20, 40]

Python中的这种行为需要几个小时来调试。 " for ... in ..."实际上工作?

2 个答案:

答案 0 :(得分:2)

代码中的

'i'将获取l列表中每个元素的值。所以输入for i in l我将首先成为第一个索引,在这种情况下为10,然后执行下面的代码,这将从列表中删除i,所以现在你的列表是[20,30,40,50]它打印我..这是10然后它跳到下一个索引l [1],现在是30,并执行代码。

答案 1 :(得分:2)

作为@A。 Lau已经提到,在for循环的第二次迭代中,i将被编入索引作为l的第二个元素,因此l[1]=30将被分配给i }。

如果你真的想删除for循环中的元素,你可以试试这样的东西:

l = [10,20,30,40,50]
for i in l[:]:
    l.remove(i)
    print(i)
print(l)

结果将是:

10
20
30
40
50
[]