def dups(a):
emp = []
for item in a:
if item not in list(set(a)):
emp.append(item)
return emp
b = [1, 2, 2, 4, 21, 5, 2, 6, 1, 7, 0]
print(dups(b))
这给了我一个空数组,我不知道为什么。
答案 0 :(得分:0)
如果打印list(set(a)
的值,则会得到[0, 1, 2, 4, 5, 6, 7, 21]
,它们是a
中的所有元素,因此当您执行if item not in list(set(a))
时,势必会得到一个空列表,因为该条件消除了所有项目。
一种更好的方法是查找列表中所有元素的计数,重复项将是所有具有count >1
的元素,如下所示。
from collections import Counter
def dups(a):
emp = []
#This gives you a dictionary of number to frequency of occurence
counter = Counter(a)
#Counter({2: 3, 1: 2, 4: 1, 21: 1, 5: 1, 6: 1, 7: 1, 0: 1})
#Iterate through the dict, and if freq is more that 1, it is duplicate
for k,v in counter.items():
if v > 1:
emp.append(k)
return emp
b = [1, 2, 2, 4, 21, 5, 2, 6, 1, 7, 0]
print(dups(b))
预期输出为:
[1, 2]