如何在整数列表中找到重复项并创建另一个重复项列表?
原文由 MFB 发布,翻译遵循 CC BY-SA 4.0 许可协议
一个非常简单的解决方案,但复杂度为 O(n*n)。
>>> xs = [1,2,3,4,4,5,5,6,1]
>>> set([x for x in xs if xs.count(x) > 1])
set([1, 4, 5])
原文由 Ritesh Kumar 发布,翻译遵循 CC BY-SA 4.0 许可协议
4 回答4.4k 阅读✓ 已解决
4 回答3.8k 阅读✓ 已解决
1 回答3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
1 回答4.5k 阅读✓ 已解决
1 回答3.8k 阅读✓ 已解决
1 回答2.8k 阅读✓ 已解决
要删除重复项,请使用
set(a)
。要打印重复项,例如:请注意,
Counter
不是特别有效( 计时)并且可能在这里过度杀伤。set
会表现更好。此代码按源顺序计算唯一元素列表:或者,更简洁地说:
我不推荐后一种风格,因为
not seen.add(x)
正在做什么并不明显(setadd()
方法总是返回None
,因此需要not
)。要计算没有库的重复元素列表:
或者,更简洁地说:
如果列表元素不可散列,则不能使用集合/字典,而必须求助于二次时间解决方案(将每个元素与每个元素进行比较)。例如: