当前位置: 首页 > 面试题库 >

Python-如何在列表中找到重复项并使用它们创建另一个列表?

夏侯兴学
2023-03-14
问题内容

如何在Python列表中找到重复项并创建另一个重复项列表?该列表仅包含整数。


问题答案:

要删除重复项,请使用set(a)。要打印副本,请执行以下操作:

a = [1,2,3,2,1,5,6,5,5,5]

import collections
print([item for item, count in collections.Counter(a).items() if count > 1])

## [1, 2, 5]

请注意,这Counter并不是特别有效(计时),并且在这里可能会过大。set会表现更好。此代码按源顺序计算唯一元素的列表:

seen = set()
uniq = []
for x in a:
    if x not in seen:
        uniq.append(x)
        seen.add(x)

或者,更简洁地说:

seen = set()
uniq = [x for x in a if x not in seen and not seen.add(x)]    

我不建议你使用后一种样式,因为not seen.add(x)这样做并不明显(set add()方法始终返回None,因此需要not)。

要计算没有库的重复元素列表:

seen = {}
dupes = []

for x in a:
    if x not in seen:
        seen[x] = 1
    else:
        if seen[x] == 1:
            dupes.append(x)
        seen[x] += 1

如果列表元素不可散列,则不能使用集合/字典,而必须求助于二​​次时间解(将每个解比较)。例如:

a = [[1], [2], [3], [1], [5], [3]]

no_dupes = [x for n, x in enumerate(a) if x not in a[:n]]
print no_dupes # [[1], [2], [3], [5]]

dupes = [x for n, x in enumerate(a) if x in a[:n]]
print dupes # [[1], [3]]


 类似资料:
  • 我需要比较两个列表,以便创建在一个列表中找到的特定元素的新列表,而不是在另一个列表中。例如: 我想在列表_1中循环,并将列表_2中未在列表_1中找到的所有元素附加到主列表。 结果应该是: 用python怎么做?

  • 问题内容: [‘a’,’a’,’b’,’c’,’c’,’c’] 至 和 问题答案: x=[‘a’,’a’,’b’,’c’,’c’,’c’] >>> map(x.count,x) [2, 2, 1, 3, 3, 3] >>> dict(zip(x,map(x.count,x))) {‘a’: 2, ‘c’: 3, ‘b’: 1} >>>

  • 我有两个bean类--乡村和城市。我需要在乡村班保留城市名单。另外,当我设置城市信息时,我需要设置国家名称,所以在城市类中也需要国家。怎么做?以下是代码: country.java

  • 问题内容: 这个问题已经在这里有了答案 : 循环“忘记”以删除一些项目[重复] (10个答案) 6年前关闭。 我想从列表“ a”中删除项目,其中列表“ b”包含在列表“ a”中找到带有单词的项目 结果应为: 这是因为在列表“ a”的项目中找到了单词“二”和“五六”。 这是我尝试解决的方法: 返回: 为什么这不起作用,如何解决此问题? 谢谢。 问题答案: 遍历列表时,请勿修改列表。这样做会产生不良的

  • 问题内容: 这个问题已经在这里有了答案 : 8年前关闭。 可能重复: Python:如何查找列表交集? 我在.txt中有两个数据列表 我想找出在两个列表中都出现的名字。我该怎么做? 问题答案: 使用集: 该运营商表示“给我这两个集合的交集” 或者,您可以使用以下方法:

  • 我试图初始化一个双链接列表,其中包含另一个双链接列表中的虚拟节点(也包含虚拟节点)。例如,学生列表中的一个节点有许多朋友存储在该节点内的链接列表中。这是我的代码: 当我试图编译它时,它告诉我:警告:来自不兼容指针类型的赋值。它出现在我发表评论的台词上。请帮忙^^ 编辑:谢谢鸭嘴兽!