python - 应用排序后从列表中提取重复项

标签 python list duplicates

我正在编写代码片段以从列表中提取重复项。我在这个站点上看到了几个实现/解决方案。但是,我没有正确地得到这一行 - 我认为语法明智。排序后,将 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/

相关文章:

python - 如何打印出 Python 函数需要/允许哪些参数?

python - 为什么格式化会导致 print() 失败?

python - 列表 append 在 Pandas 单元格中

python - 高效的元组列表比较

SQL - 如何根据最后输入的值删除重复的行?

php - 如何使用 MySQL 检索数据,以免在单个列中出现重复值?

python Pandas : selecting rows whose column value is null/None/nan

python - 解析 pdf 中的注释

c# - 为什么 SortedList 和 List 使用数组,为什么 LinkedList 用得不多?

python - 如何查找两个 pandas 数据框并从另一个数据框列更新第一个数据框列中的值?