我有一个类似这样的列表:-
如何在Python中实现去除所有重复元素而不仅仅是第一个重复元素的出现?
[1,2,3,4,3,5,3,6,7,8]
我想从列表中完全删除重复元素(这里是:- 3),就像这样:
[1,2,4,5,6,7,8]
如何在Python中实现去除所有重复元素而不仅仅是第一个重复元素的出现?
你可以使用 collections
的 Counter
来统计元素出现的次数,并使用列表推导式选择那些仅出现一次的元素:
from collections import Counter
a = [1,2,3,4,3,5,3,6,7,8]
[k for k, v in Counter(a).items() if v == 1]
(Counter
基本上返回一个字典,其中元素作为键存储,它们的计数作为值存储。)
#Finding duplicate
def dup(x):
s = len(x)
duplicate = []
for i in range(s):
k = i + 1
for j in range(k, s):
if x[i] == x[j] and x[i] not in duplicate:
duplicate.append(x[i])
return duplicate
#begining
list1 = [1, 2, 3, 4, 3, 5, 3, 6, 7, 8]
#Finding duplicate
dup_list = (dup(list1))
#removing duplicates from the list
final_list = list(set(list1) - set(dup_list))
print(final_list)
a = [1,2,3,4,3,5,3,6,7,8]
print(a)
a = list(set(a))
print(a)
这将输出
[1,2,3,4,3,5,3,6,7,8]
[1,2,4,5,6,7,8]
[1, 2, 3, 4, 5, 6, 7, 8]
,这与 set
的行为一致。-1 - JL Peyretimport pandas as pd
sample_list = [1,2,3,4,3,5,3,6,7,8]
unique_list = list(pd.Series(sample_list).drop_duplicates())
>> unique_list
>> [1, 2, 3, 4, 5, 6, 7, 8]
for
循环和可能的not in duplicate
检查都是O(n),总时间复杂度达到O(n^2)到O(n^3)——最优解只需要O(n)的时间复杂度,并且在空间使用上也不会更差。 - MisterMiyagi