繁体   English   中英

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

[英]Need help removing duplicates numbers in Python exercise

我应该编写一个程序来消除重复值并返回唯一的数字。 我必须使用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类。

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

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

尝试:

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

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

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

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

现在,为了消除重复,您可以使用字典,如果不是一组:

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

如果您使用以下两个问题将得到解决:

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)分割字符串来生成字符串列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM