为什么此代码的输出仅为1到121之间的偶数?

时间:2017-09-14 12:13:45

标签: python-3.x

A=list(range(1,121))
for i in A:
    A.remove(i)
print(A)

不应该是空的吗?我真的不明白这个..

1 个答案:

答案 0 :(得分:2)

你通常不想修改你正在迭代的列表,因为你会得到奇怪的结果,比如你正在遇到的。

您有一个数字列表,1-121。你删除了第一个,所有内容都在记忆中向下移动,因此2现在处于零位。做范围2-122,你只会获得奇数。

 x = [1, 2, 3, 4, 5, 6]
 for i in x:
     x.remove(i)
     #first time through x = [2, 3, 4, 5, 6]
                           #  ^ i is still pointing here though and the next time
                           #    through it will be pointing at 3 (i = 2)