如果在 python 中出现超过特定值,则从列表中删除元素

Remove elements from list if appears more than a specific value in python

您好,我有以下代码

list1 = [1,1,1,1]
x = 1
def delete(list1,x):
     for i in list1:
        if list1.count(i) > x:
            list1.remove(i)

预计 [1]

输出[1,1]

谁能解释一下为什么最后一次那个count(i)等于2不去掉元素??????

当您使用 for 循环遍历列表时,了解修改列表时迭代如何变化是非常重要的。

此代码的问题在于,一旦您在迭代时删除元素,就会跳过元素,因此您的循环将提前结束。

我们可以通过简单地遍历列表的副本来解决这个问题,但将更改应用到我们的原始列表:

list1 = [1,1,1,1]
x = 1
def delete(list1,x):
     for i in list1.copy(): #change is made here
        if list1.count(i) > x:
            list1.remove(i)

delete(list1,x)
print(list1)

输出:

[1]

希望对您有所帮助!如果您需要任何进一步的帮助或说明,请告诉我:)