如果在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]

有人能解释一下为什么在最后一次计数(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]

我希望这能有所帮助!如果您需要任何进一步的帮助或澄清,请告诉我:(

最新更新