如何在提供的列表中找到重复的号码并打印该号码? [重复]

问题描述 投票:0回答:3

我想编写一个简短的Python函数,它将检测整数列表中的重复数字并将该数字打印到标准输出。输入 5;0,1,2,3,0 已由这些行生成:

导入系统 对于 sys.stdin 中的行: 打印行,

我想知道是否可以使用以下代码(上面 for 循环的一部分)来获得所需的输出“0”:

seen = set()
for num in line:
    if num in seen:
        print num
    else:
        seen.add(num)

到目前为止,这给了我输出: 5;0,1,2,3,0 , , , 0

我只需要去掉逗号并保留 0... 这适用于一般的 Python,不一定是 Python 3。

python list duplicates
3个回答
1
投票

您可以使用这个简短的代码来做到这一点

In[43]: a = [0,1,2,3,0]
        print [j for j, i in enumerate(a) if j in a[i+1:]]
Output
[0]

0
投票

一个小更正:如果您之前没有见过它,您想将数字添加到集合中见过

line = [5,0,1,2,3,0]
seen = set()
for num in line:
    if num in seen:
        print num
    else:
        seen.add(num)

这会产生所需的单个 0 输出。


0
投票

对 Alexis G 的代码进行了小幅改进,使该行更加通用:

a=[1,6,2,4,6,5]
print [j for i, j in enumerate(a) if j in a[i+1:]]
[6]

a=[1,6,2,4,6,5,2]
print [j for i, j in enumerate(a) if j in a[i+1:]]
[6, 2]

a = ['a','d','c','d','f','b','f']
print [j for i, j in enumerate(a) if j in a[i+1:]]
['d', 'f']
© www.soinside.com 2019 - 2024. All rights reserved.