提问人:Mohamed Fahd 提问时间:4/17/2023 更新时间:4/17/2023 访问量:40
从 Python 列表中删除重复项 [duplicate]
removing a duplicated item from a python list [duplicate]
问:
我正在尝试从具有重复最大值的列表中删除最大值,例如:[1,3,6,6,5] 我使用的代码只删除其中一个值,而不删除另一个值。任何想法为什么会发生这种情况?我使用的代码是:
n = int(input())
arr = map(int, input().split())
lst = list (arr)
for i in lst:
if i == max(lst):
del(lst[lst.index(i)])
print (max(lst))
答:
1赞
John Gordon
4/17/2023
#1
这段代码就是问题所在:
for i in lst:
if i == max(lst):
del(lst[lst.index(i)])
正如@AllanWind所评论的,当您调用从列表中删除项目时,这会更改列表的大小,这会导致外部循环与实际列表内容不同步。del
for i in lst
不要在循环访问列表时向列表添加/删除项目。
对于这个特定的用例,这段代码会好得多:
m = max(lst)
while m in lst:
lst.remove(m)
0赞
Allan Wind
4/17/2023
#2
您可以使用过滤器(如果您愿意,可以将结果分配给相同的过滤器):lst
lst = [1, 3, 6, 6, 5]
lst2 = list(filter(lambda f: f != max(lst), lst))
评论
newlst = [i for i in lst if i != max(lst)]