我希望我的代码删除列表中除特定数字(3
)之外的所有数字。相反,它会删除某些数字,但其中大部分仍保留在列表中。
myList = [0,1,2,3,4,5]
i = 0
for i in myList:
print(i)
if i != 3:
myList.remove(i)
else:
continue
i += 1
print(myList)
最佳答案
您遇到了一些问题。首先,您在尝试处理列表时尝试就地修改列表。您可以通过更改来解决此问题:
for i in myList:
到:
for i in myList[:]:
这将使您的代码给出所需的结果。它创建了一个列表的“副本”以供迭代,因此您可以修改原始列表而不会弄乱您的迭代循环。
另一件需要注意的事情是,您在 for
循环中为 i 分配了一个值,但是随后您在 if-else< 之后手动更改了它
block 。当您返回到循环顶部时,该更改将被丢弃。
此外,您else: continue
阻止递增i,但这没关系,因为递增的值无论如何都会被丢弃。
所以...注释掉一些不必要的东西可以得到:
myList = [0,1,2,3,4,5]
# i = 0
for i in myList[:]:
print(i)
if i != 3:
myList.remove(i)
# else:
# continue
# i += 1
print(myList)
关于python - 如何删除列表中除 1 个数字(Python)之外的所有数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65515132/