无法删除最后一个单个对象

时间:2016-07-05 08:15:11

标签: python list

我的代码应该收到一个数字列表,然后在屏幕上输出重复一次以上的唯一数字。我不知道为什么,但它不能使用列表中间的数字。我的代码:

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

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}转换为setmap(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)