如何在提供的列表中找到重复的数字并打印该数字?

时间:2015-11-07 01:37:26

标签: python list duplicates

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

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

我想知道我是否可以使用以下代码(上面的部分循环)来获得所需的输出“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。

3 个答案:

答案 0 :(得分: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]

答案 1 :(得分: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的所需输出。

答案 2 :(得分: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']