需要帮助删除Python练习中的重复数字

时间:2013-03-13 13:28:17

标签: python numbers duplicates

我应该编写一个程序来消除重复值并返回唯一数字。我必须使用def eliminate(alist)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 个答案:

答案 0 :(得分:2)

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

alist = [int(num) for num in numbers.split(' ')]

答案 1 :(得分:0)

尝试:

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

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

答案 2 :(得分:0)

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

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

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

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

答案 3 :(得分: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()通过根据特定的分隔符(默认情况下为“”char“)来分割字符串列表。