我正在编写代码片段以从列表中提取重复项。我在这个站点上看到了几个实现/解决方案。但是,我没有正确地得到这一行 - 我认为语法明智。排序后,将 index(x) 与 index(x+1) 进行比较。如果它被添加到集合中。
print(set([i for i in a if (a[i] == a[i+1]))
a = [1,2,3,2,1,5,6,5,5,5]
print(a)
print(set(sorted(a)))
# l1[i] == l1[i+1]
print(set([i for i in a if (a[i] == a[i+1]))
print(set([i for i in a if sum([1 for item in a if item == i]) > 1]))
预期结果:{1, 2, 5}
最佳答案
你可以使用 collections.Counter
:
from collections import Counter
a = [1,2,3,2,1,5,6,5,5,5]
c = Counter(a)
res = [n for n, m in c.items() if m > 1]
print(res) # [1, 2, 5]
通过这种方式,您可以在列表上迭代一次,并且只在柜台上迭代一次。
关于python - 应用排序后从列表中提取重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55720233/