在Python中,如何将列表简化为重复项列表?
我有一个字符串的列表,这些字符串应该是唯一的。我想快速检查是否有重复的字符串。具体来说,我想从原始列表中生成一个新列表,里面包含所有重复的项。我不在乎这些项重复了多少次,所以如果有两个重复的项,新列表里只需要出现一次就可以了。
可惜的是,我想不出一个简单的方法来做到这一点。有谁能给点建议吗?
补充说明:谢谢大家的回答,我想再澄清一下。我并不是单纯想要一个唯一的列表。我是根据文本文件生成这个列表的,我想知道哪些是重复的,这样我就可以去文本文件里把它们删掉,如果有的话。
9 个回答
4
这段代码会在一行内创建一个列表:
L = [1, 2, 3, 3, 4, 4, 4]
L_dup = set([i for i in L if L.count(i) > 1])
6
这里提到的 groupby
是来自 itertools 的一个功能,可能会对你有帮助:
from itertools import groupby
duplicated=[k for (k,g) in groupby(sorted(l)) if len(list(g)) > 1]
简单来说,你可以用它来找出那些出现超过一次的元素……
注意哦,调用 sorted
是必须的,因为 groupby
只有在输入数据是排好序的情况下才能正常工作。
20
这段代码应该能正常运行:
duplicates = set()
found = set()
for item in source:
if item in found:
duplicates.add(item)
else:
found.add(item)