在Python中,如何获取列表并将其缩减为重复列表?

Eug*_*e M 0 python

我有一个应该是唯一的字符串列表.我希望能够快速检查重复项.具体来说,我希望能够获取原始列表并生成包含任何重复项目的新列表.我不关心这些项目重复多少次,因此如果有两个重复项,则不必有两次单词.

不幸的是,我想不出一种不那么笨重的方法.有什么建议?

编辑:谢谢你的答案,我想我会澄清一下.我并不关心为它自己制作一份独特的清单.我正在根据文本文件生成列表,我想知道重复项是什么,所以我可以进入文本文件并删除它们,如果有任何显示.

Sta*_*ale 19

这段代码应该有效:

duplicates = set()
found = set()
for item in source:
    if item in found:
        duplicates.add(item)
    else:
        found.add(item)
Run Code Online (Sandbox Code Playgroud)

  • 集合是我认为的哈希表,这意味着包含测试平均为O(1),而列表包含是O(n). (2认同)

Joh*_*ery 6

groupby来自itertools可能在这里很有用:


from itertools import groupby
duplicated=[k for (k,g) in groupby(sorted(l)) if len(list(g)) > 1]
Run Code Online (Sandbox Code Playgroud)

基本上你用它来找到不止一次出现的元素......

NB.sorted需要调用,因为groupby只有输入被排序才能正常工作.