你好,我有以下代码
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]
我希望这能有所帮助!如果您需要任何进一步的帮助或澄清,请告诉我:(