删除重复项和排序列表python

时间:2019-01-15 06:51:47

标签: python python-3.x list

给出一个列表,我需要按排序顺序打印数字并删除所有重复项。我正在使用python 3.7.2

我的代码:

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    CHOICES = [()]
    self.fields['choice_field'].choices = CHOICES

但是,只要我的输入由2位数字组成,逻辑就会失败。 例如。对于def sorted_elements(numbers): return sorted(set(numbers)) testcase = int(input()) while testcase > 0: numbers = input().split() l = sorted_elements(numbers) for x in l: print (x, end = ' ') print () testcase -= 1 的输入,我得到2 1 43 2 5的输出。

这非常适合一位数字。有人可以帮我吗?

5 个答案:

答案 0 :(得分:1)

您只需要稍作修改。您正在比较字符串而不是数字,因此请尝试以下操作:

def sorted_elements(numbers):
    return sorted(set(numbers))

testcase = int(input())
while testcase > 0:
   numbers = map(int, input().split())
   l = sorted_elements(numbers)

   for x in l:
      print (x, end = ' ')

   print ()
   testcase -= 1

如果需要,您也可以这样做:

numbers = (int(x) for x in input().split())

答案 1 :(得分:0)

您将使用set(numbers)的正确方法删除重复项。问题来自sorted,而您的numbersstr而不是int的列表。

尝试一下:

x_numbers = input().split()
numbers = [int(x) for x in x_numbers]

答案 2 :(得分:0)

您可以在各个方面进行简化。使用适当的键函数按数值排序,如果事先知道迭代次数,请使用for循环,并使用str.join等适当的字符串工具,等等。

testcases = int(input())

for _ in range(testcases):
    print(' '.join(sorted(set(input().split()), key=int)))

答案 3 :(得分:0)

我们可以像这样简单。这是参考

input=raw_input() #took input as string
inputlist=input.split() #split the string to list
lsintegers = map(int, list(set(inputlist))) #remove duplicates converted each element to integer
lsintegers.sort() #sorted 
print(lsintegers)`

答案 4 :(得分:0)

立即尝试:

    testcase = int(input())
    n=list(str(testcase))
    results = map(int, n)

    numbers= sorted(set(results))


    print(numbers)

代码在这里:https://repl.it/repls/SeriousRosybrownApplicationprogrammer