首页 > 解决方案 > 为什么我的 python 代码不删除所有等于目标的元素?

问题描述

我正在尝试删除数组中与目标相等的所有元素,这是一个相当简单的过程。但由于某种原因,它只删除了数组中目标的第一个元素,我不知道为什么。这是我的代码(python)

arr = [1,2,2,3,4,5,5]
for num in arr:
    if num == 2:
        arr.remove(num)
print(arr)

并将数组打印为 [1,2,3,4,5,5]。如果你们中的任何人知道出了什么问题,那就太好了。谢谢

标签: arrayspython-3.x

解决方案


您的代码不会删除所有元素,因为删除第一个元素时列表的索引会减少 1。你的指针已经向前移动了。

相反,您可以这样做:

In [249]: arr = [1,2,2,3,4,5,5] 
In [251]: list(filter(lambda a: a != 2, arr))                                                                                                                                                               
Out[251]: [1, 3, 4, 5, 5]

推荐阅读