gpt4 book ai didi

python - 如何从列表中删除除 Python 中的一个元素之外的所有重复项?

转载 作者:太空宇宙 更新时间:2023-11-04 10:58:16 26 4
gpt4 key购买 nike

我已经知道如何使用 setList 中删除所有重复项:

ls = list(set(ls))

我想知道有没有什么方法可以像上面的方法一样有效地删除除一个元素实例之外的所有重复项?

ls = [1, 2, 3, 3, 3, 4, 4]
#i want to keep 4, no matter if it is duplicate but want to remove duplicates from rest
so the output should be:
ls = [1, 2, 3, 4, 4]

一种可能的解决方案是遍历元素并使用条件检查。我正在寻找最佳解决方案。

最佳答案

一种方法是在额外删除的 4 中添加回来:

sl = list(set(ls))
sl += [4] * (ls.count(4) - 1)

或者,始终将 4 附加到新列表:

s = set()
sl = []
for elem in ls:
if elem == 4 or elem not in s:
sl.append(elem)
s.add(elem)

使用set 允许恒定时间成员测试;如果您只使用列表,它将是 O(n)。

如果你愿意,你可以把它写成一个列表推导式,但普通的循环更具可读性:

s = set()
sl = [s.add(elem) or elem for elem in ls if elem == 4 or elem not in s]

关于python - 如何从列表中删除除 Python 中的一个元素之外的所有重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7944895/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com