在修改列表中的for循环内的列表时产生奇怪的输出

时间:2019-04-02 23:56:20

标签: python python-2.7 list for-loop

H=[1,2,3,4,5,6,7,8]
for h in H:
    print h
    if h%2==1:
        H.remove(h)
        print H

输出:

1
[2, 3, 4, 5, 6, 7, 8]
3
[2, 4, 5, 6, 7, 8]
5
[2, 4, 6, 7, 8]
7
[2, 4, 6, 8]

因此,我只是在尝试在同一列表的for循环内修改列表的可能性,尽管列表本身的行为与我的想法相同,但我不明白为什么数字2,4,6,8没有被打印。谁能解释?

1 个答案:

答案 0 :(得分:0)

这是因为您要在遍历列表时对其进行修改。例如,在您的第一次迭代中,您将删除元素1,而在您的下一次迭代中,索引为2。但是在修改后的列表中,索引位置2中的元素为3,因为您删除了元素1