#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)
Поэтому сначала вы вычисляете все числа и только в конце выводите их