对于我的一生,我无法弄清楚为什么我的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)
问题是您要在迭代列表时修改列表,因此所有偶数都将被跳过。因此,if条件总是False。
if
False
该for循环跟踪指数的,所以当你在索引中删除的项目i在,下一个项目i+1个位置转变为当前指数(i),因此在接下来的迭代中,你居然会挑i+2个项。
for
i
i+1
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