Поиск уникальных элементов из списка заданных чисел

#python #list

#питон #Список

Вопрос:

Я написал код, который находит уникальные элементы из списка целых чисел.

 def Distinct(arr, n):   for i in range(0, n):   d = 0  for j in range(0, i):  if (arr[i] == arr[j]):  d = 1  break   if (d == 0):  print(arr[i], end=',')    n = int(input('Enter length of numbers: ')) arr = [] for i in range(n):  a = input('enter the number: ')  arr.append(a) print(Distinct(arr, n))   

если мой заданный входной массив находится [1,2,2,3,4] там, где n = 5 я получаю выходные данные, 1,2,3,4,None но я хочу, чтобы выходные данные были 1,2,3,4 , может ли кто-нибудь сказать, как это исправить ?

Комментарии:

1. print(list(set(arr)))

2. или print(list(dict.fromkeys(arr))) , если порядок имеет значение

3. но я не хочу, чтобы выводился в виде списка

4. разве вы не знаете, как перебирать список и выводить его значения?

Ответ №1:

У вашей функции Distinct нет return оператора, поэтому она всегда будет возвращаться None . Когда вы звоните print(Distinct(arr, n)) , это печать None того, что возвращается. Вы можете просто удалить print() подобное, так:

 Distinct(arr, n)  

Чтобы удалить последнюю запятую, вы не можете напечатать запятую на первой итерации, а затем напечатать запятые перед элементами. Это потому, что вы не знаете, какой предмет будет последним.

 if d == 0 and i == 0:  print(arr[i], end='') elif d == 0:  print(","   arr[i], end='')  

Комментарии:

1. можете ли вы сказать, как удалить конечную запятую ?

2. @RAKSHITHARSH Я отредактировал ответ

Ответ №2:

Попробуйте что-нибудь вроде этого:

 def Distinct(arr, n):  lst = []  for i in range(0, n):  for j in range(0, i):  if (arr[i] == arr[j]):  lst.append(arr[i])  break  print(*lst, sep=',')    n = int(input('Enter length of numbers: ')) arr = [] for i in range(n):  a = input('enter the number: ')  arr.append(a) Distinct(arr, n)  

Поэтому сначала вы вычисляете все числа и только в конце выводите их