我的代码应该收到一个数字列表,然后在屏幕上输出重复一次以上的唯一数字。我不知道为什么,但它不能使用列表中间的数字。我的代码:
a = [int(i) for i in (input().split())]
a.sort()
for number in a:
if a.count(number)==1:
a.remove(number)
else:
a.remove(a.count(number)-a.count(number)+number)
for number in a:
print(number, end=' ')
我尝试在第4个字符串上更改if,但最后一个数字保留在列表中。 它应该像:
样品输入1:4 8 0 3 4 2 0 3样品输出1:0 3 4
样品输入2:10样品输出2:
样品输入3:1 1 2 2 3 3样品输出3:1 2 3
样品输入4:1 1 1 1 1 2 2 2样品输出4:1 2
答案 0 :(得分:1)
您可以使用set
来解决此问题:
a = list(map(int, input().split()))
print(" ".join(map(str, set(i for i in a if a.count(i) > 1))))
<强>解释强>
首先,看起来您应该阅读map
函数。而不是a = [int(i) for i in (input().split())]
,你可以使用list(map(int, input().split()))
,而不是Pythonic。
其次,第二行的重要部分是set(i for i in a if a.count(i) > 1)
,它只创建一个新列表,其中仅包含来自a
的重复项(即[1, 2, 3, 2, 3]
变为[2, 3, 2, 3]
然后将set
应用于[2, 3, 2, 3]
,将{2, 3}
转换为set
(map(str, ...)
个对象)。
如果您想知道set
的用途,可以打印新{2, 3}
内的每个元素(例如parseInt()
)。
答案 1 :(得分:1)
您可以使用内置的lib collections
来计算列表项并按所需条件对其进行过滤。
import collections
ints = map(int, input().split())
count = collections.Counter(ints)
print filter(lambda x: count[x] > 1, count)