我想编写一个简短的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。
您可以使用这个简短的代码来做到这一点
In[43]: a = [0,1,2,3,0]
print [j for j, i in enumerate(a) if j in a[i+1:]]
Output
[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 输出。
对 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']