KalkiAvatar Ответов: 1

Помощь с программой Python для поиска дубликатов элементов


Code-
list = []

num=int(input('how many numbers'))
for n in range(num):
    number=int(input('enter numbers'))
    list.append(number)
print(list)
list.sort()

newlist=list
for n in range(len(newlist)):
    if newlist[n]==newlist[n+1]:
         print("dupilcate found at index"+str(int(newlist.index(n))))
         break
        
    else:
        print('no duplicates')


Что я уже пробовал:

its running but not giving results.My logic is to first just sort the list then check if any number is equal to its neighbouring number in the sorted list,because equal numbers would be neighbours in sorted list.

1 Ответов

Рейтинг:
10

Afzaal Ahmad Zeeshan

Я предполагаю, что это домашнее задание, поэтому отвечу соответственно. Куча проблем, которые я вижу с вашим кодом Python там.

Во-первых, вы заставляете свой алгоритм работать плохо с помощью этой строки:

list.sort()
Логика правильная, но конечный результат с точки зрения алгоритма не очень хорош. Вы уже изучали алгоритмы и структуры данных? Если вы учитесь, то это время, когда вы начинаете вычислять общий случай для вашего алгоритма.

Во-вторых, в Python вы можете сделать это:
for index, element in enumerate(newlist):
Это даст вам индекс, который вы хотели распечатать на консоли. В противном случае это еще один поиск в вашем массиве.

Наконец, попробуйте написать алгоритм, который считывает массив только один раз. Как вы можете найти дубликаты? Короче говоря, как вы можете сказать, если что-то повторяется? Ты это помнишь. Попробуйте вспомнить, если вы видели значение, и где вы видели это значение в вашей программе. Таким образом, вы пройдете массив только один раз и получите результат, если есть дубликаты.

Это изменится, если вы хотите найти "все" дубликаты, "первый" дубликат или распечатать все дубликаты.

7 PEP 279: перечислить()[^]
алгоритм - какова сложность этого метода сортировки python? - переполнение стека[^]