小编典典

if循环中的语句不起作用

python

对于我的一生,我无法弄清楚为什么我的IF语句没有受到攻击。在很多情况下,n的余数//放在结果列表中的最后一个数字为0。

n = 100
numbers = range(2, n)
results = []


results.append(numbers.pop(0))

print numbers

for n in numbers:
    if n % results[-1] == 0:
        print "If statement", numbers
        numbers.remove(n)
    else:
        print "Else statement", numbers
        numbers.remove(n)

阅读 208

收藏
2021-01-20

共1个答案

小编典典

问题是您要在迭代列表时修改列表,因此所有偶数都将被跳过。因此,if条件总是False

for循环跟踪指数的,所以当你在索引中删除的项目i在,下一个项目i+1个位置转变为当前指数(i),因此在接下来的迭代中,你居然会挑i+2个项。

for n in numbers[:]:   #iterate over a shallow copy of list
    if n % results[-1] == 0:
        print "If statement", numbers
        numbers.remove(n)
    else:
        print "Else statement", numbers
        numbers.remove(n)

例:

>>> lis  = range(3,15)
>>> for x in lis:
...     print x
...     lis.remove(x)
...     
3
5
7
9
11
13
2021-01-20