+15 投票
分类:Python编程与实践 | 用户: (2.6k 分)

代码

nums=[1,3,5,7,9]
for num in nums:
    if num<5:
        print(num)
    else:
        print("it's"+str(num))
        nums.remove(num)
print(nums)

结果:

1
3
it's5
it's9
[1, 3, 7]

1个回答

+3 投票
用户: (8.0k 分)

 

对于lz的问题,可以做一下实验,打印出来数组元素就一目了然了。

for num in nums:
    if num<5:
        print(num)
    else:
        print("it's"+str(num))
        print("before remove",nums)
        nums.remove(num)
        print("after remove",nums)
>> result
1
3
it's5
before remove [1, 3, 5, 7, 9]
after remove [1, 3, 7, 9]
it's9
before remove [1, 3, 7, 9]
after remove [1, 3, 7]

在循环到num=5的时候,删除掉了num=5的元素,循环内部的循环变量为2,在下一次循环时,输入的数组为[1,3,7,9],此时的循环变量为3,也就是从第4个元素9算起,所以跳过了元素7.

最后,不建议在循环中直接修改可迭代对象。

欢迎来到 爱可可Q&A ,有什么问题可以尽管在这里提问,你将会收到其他成员的热心回答。
...