如果在 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]
希望对您有所帮助!如果您需要任何进一步的帮助或说明,请告诉我:)
您好,我有以下代码
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]
希望对您有所帮助!如果您需要任何进一步的帮助或说明,请告诉我:)