L = [4, 2, 25, 7777777, 100, 3, 77777777, 77777777, 77777777, 77777777]
for data in L:
if data % 3 == 0 or data % 7 == 0:
L.remove(data)
print(L)
看如图的代码,鼠鼠的想法是希望,遍历列表找到能够整除3和7的数字,然后删除他,但是按照这种方式,鼠鼠发现了问题
结果如图所示
鼠鼠发现列表当值的77777777,本应该是满足条件的元素,但是其并没有删除,这让鼠鼠疑惑了好久,最后发现,如果我们假想这个for循环相当于一个指针,然后指针指着位置,依次往后面移动,问题就出现在L.remove()这个函数上,删除其中一个777777777元素时,后面的元素都会前移,但是我们的指针不会停在原来的位置,其也会往后面移动,这就出现了图中的结果,导致前移的元素,我们的指针并没有指到。
所以鼠鼠想到的方法就是,j建立一个空列表,遍历循环其中一个元素,把符合条件的元素放入另外一个列表中,就不会出现上述问题啦!!
L = [4, 2, 25, 7777777, 100, 3, 77777777, 77777777, 77777777, 77777777]
L_new = []
for data in L:
if data % 2 == 0 or data % 5 == 0:
L_new.append(data)