Удаление дубликатов и сортировка списка питонов - PullRequest
0 голосов
/ 15 января 2019

Учитывая список, мне нужно распечатать числа в отсортированном порядке и удалить все дубликаты. Я использую Python 3.7.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 я получаю вывод 1 2 43 5.

Это прекрасно работает для однозначных чисел. Может ли кто-нибудь помочь мне с этим?

Ответы [ 5 ]

0 голосов
/ 15 января 2019

Попробуйте сейчас:

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

    numbers= sorted(set(results))


    print(numbers)

код здесь: https://repl.it/repls/SeriousRosybrownApplicationprogrammer

0 голосов
/ 15 января 2019

Мы можем сделать это так просто. Это ссылка

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)`
0 голосов
/ 15 января 2019

Вы идете правильным путем с set(numbers), чтобы удалить дубликаты. Проблема возникает из sorted с вашим numbers списком str с, а не int с.

Попробуйте это:

x_numbers = input().split()
numbers = [int(x) for x in x_numbers]
0 голосов
/ 15 января 2019

Вы можете упростить это в разных аспектах. Сортировка по числовому значению с использованием соответствующей ключевой функции, используйте цикл for, если вы заранее знаете количество итераций, используйте соответствующие строковые утилиты, такие как str.join и т. Д.

testcases = int(input())

for _ in range(testcases):
    print(' '.join(sorted(set(input().split()), key=int)))
0 голосов
/ 15 января 2019

Вам нужно только небольшое изменение. Вы сравниваете строки вместо чисел, поэтому попробуйте это вместо:

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())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...