【发布时间】:2020-12-11 16:49:27
【问题描述】:
我有一个这样的列表:-
[1,2,3,4,3,5,3,6,7,8]
我想从列表中完全删除重复元素(此处:- 3),如下所示:-
[1,2,4,5,6,7,8]
如何在 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]
Google 上有很多内容,所以你可以直接查一下(这就是你投反对票的原因)
【讨论】:
[1, 2, 3, 4, 5, 6, 7, 8] 这与 set 行为一致。 -1
一个好的和有效的方法是使用 pandas
import 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]
【讨论】: