当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在Python中,如何获取列表并将其缩减为重复列表?》经验,为你挑选了2个好方法。

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

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

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



1> Staale..:

这段代码应该有效:

duplicates = set()
found = set()
for item in source:
    if item in found:
        duplicates.add(item)
    else:
        found.add(item)


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

2> John Montgom..:

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

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

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

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

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有