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

需要在Python练习中删除重复数字的帮助吗,python,numbers,duplicates,Python,Numbers,Duplicates,我应该写一个程序,消除重复值并返回唯一的数字。我必须使用def消去(alist)和def main()。数字必须从标准输入中输入,并且必须用空格分隔 输出应如下所示 输入数字:531235445171 数字是:[5,3,12,554,1,7] 相反,我得到 输入数字:531235445171 数字是:['5','','3','1','2','4','7'] 如何删除该空间?另外,我的程序不把554识别为一个数字,它把554识别为5 4 这就是我目前得到的 def eliminate(alist)

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

输出应如下所示

输入数字:531235445171

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

相反,我得到

输入数字:531235445171

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

如何删除该空间?另外,我的程序不把554识别为一个数字,它把554识别为5 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类。

请尝试:

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

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

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

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

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

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


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

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

alist = numbers.split()
而不是
alist=列表(数字)

说明:

如果按原样将数字传递给list()函数,它会将字符串中的每个字符传递给列表成员。这样,“544”就变成了['5'、'4'、'4'],而“56”就变成了['5'、'6']


另一方面,split()通过根据特定分隔符(默认情况下为“”字符)分割字符串来生成字符串列表。

您看到的是一个简单的单行列表理解。在当前的消除(x)函数中,您或多或少具有相同的逻辑。编写了一个带有解释的新答案在处理它之前,您是否尝试过检查
alist
?你希望它包含什么?里面有什么?你能解释一下区别吗?谢谢你非常详细的解释,但唯一的错误是它应该不带“”。示例[1,2,3]在这种情况下,您可以添加以下命令将其转换为整数:
>>alist=map(int,alist)
this work。是否有其他方法将其转换为整数?因为在我的课堂上,我们还没有学会地图。
alist = numbers.split()
>>> numbers = '5 3 12 3 544 5 1 7 1'
>>> alist = numbers.split()
>>> alist
['5', '3', '12', '3', '544', '5', '1', '7', '1']