我想编写一个简短的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。
答案 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']