0

我应该编写一个程序来消除重复值并返回唯一数字。我必须使用 adef eliminate(alist)和 a def main()。数字必须从标准输入输入,并且必须用空格分隔。

输出应该如下

输入数字:5 3 12 3 544 5 1 7 1

数字是:[5, 3, 12, 554, 1, 7]

相反,我得到....

输入数字:5 3 12 3 544 5 1 7 1

数字是:['5', '', '3', '1', '2', '4', '7']

如何删除空间?此外,我的程序不会将 554 识别为单个数字,而是将其识别为 5 4 4。

这是我到目前为止得到的

def eliminate(alist):
    outlist = []
    for element in alist:
        if element not in outlist:
            outlist.append(element)
    return outlist       

def main():
    numbers=input("Enter numbers:")
    alist=list(numbers)
    print("The unique numbers are:",eliminate(alist))
main()

请注意:我不允许为此程序使用 set 类。

4

4 回答 4

2

你只是给它一系列字符,并要求独特的字符,这似乎是正确的。您需要在空格上拆分字符串,甚至可能转换为数字(我猜是整数):

alist = [int(num) for num in numbers.split(' ')]
于 2013-03-13T13:38:21.680 回答
0

尝试:

item for item in myList if item.count(item) == 1

对于你的函数体的逻辑(如果你必须使用它)。将此列表推导的返回传递给变量或打印。

于 2013-03-13T13:30:48.413 回答
0

您将 '' 和 544 作为单独的字符获取,因为在您的输入中,numbers不是整数列表。它是一串字符。即使将其转换为列表,它仍然是单个字符的列表。因此,要将其转换为整数,请执行以下操作:

numbers=map(lambda x:int(x), numbers.split())

现在,要消除重复项,您可以使用字典(如果不是集合):

unique = dict.fromkeys(numbers).keys()

于 2013-03-13T13:39:46.630 回答
0

如果您使用,这两个问题都将得到解决:

alist = numbers.split()

代替alist=list(numbers)

>>> numbers = '5 3 12 3 544 5 1 7 1'
>>> alist = numbers.split()
>>> alist
['5', '3', '12', '3', '544', '5', '1', '7', '1']

解释:

如果您按原样将数字传递给 list() 函数,则它将字符串的每个字符传递给列表成员。这样,'544' 变为 ['5', '4', '4'] 并且 '5 6' 变为 ['5', '6']。

另一方面,split() 通过根据特定分隔符拆分字符串来创建字符串列表,默认情况下,该分隔符是 " " 字符。

于 2013-03-13T13:42:32.570 回答