Найти - Пользователи
Полная версия: Нахождение повторяющихся элементов в списке.
Начало » Центр помощи » Нахождение повторяющихся элементов в списке.
1
Stroncy
Здравствуйте. Нужно: чтоб программа принимала на вход список чисел в одной строке и выводила на экран в одну строку значения, которые повторяются в нём более одного раза.
…python3
botinag
>>> list_of_num = [1, 1, 2, 3, 3, 4, 5]
>>> print [x for x in set(list_of_num) if list_of_num.count(x) > 1]
[1, 3]

для 3 питона надо взять все то, что после print в круглые скобки:
print ([x for x in set(list_of_num) if list_of_num.count(x) > 1])
Stroncy
botinag вроде оно но, подскажите как сделать чтоб вывод был без скобок.. просто числа?
..и ввод надо так: str(input()) ?
Например ввёл(через пробел): 1 2 3 4 5 5 6 7 3 1
и получил вывод: 1 3 5
botinag
string = input('Vvedite chisla razdelyaya ih probelami: ')
list_of_num = string.split(' ')
res = [x for x in set(list_of_num) if list_of_num.count(x) > 1]
print(' '.join(res))
Alen
Stroncy
подскажите как сделать чтоб вывод был без скобок.. просто числа?

' '.join([x for x in set(list_of_num) if list_of_num.count(x) > 1])
Stroncy
botinag
string = input('Vvedite chisla razdelyaya ih probelami: ‘)
list_of_num = string.split(’ ')
res =
print(' '.join(res))
Спасибо, ваш код подошёл ))
py.user.next
Предположим, что вводится миллиард чисел. Нужно без .count() делать.

>>> def f(lst):
...     s = {}
...     for i in lst:
...         n = s.get(i, 0)
...         if n == 0:
...             s[i] = 1
...         elif n == 1:
...             s[i] = 2
...             yield i
... 
>>> list(f([1, 2, 3, 4, 5, 5, 6, 7, 3, 1]))
[5, 3, 1]
>>>

Чтобы по порядку шли, надо потом развернуть один раз.
Stroncy
py.user.next
Предположим, что вводится миллиард чисел. Нужно без .count() делать.
Возможно.. но, тест прошёл ))
py.user.next
Тут проблема в том, что он будет по всему миллиарду проходить на каждом элементе. А те элементы, которые уже выяснены (которые нужно отбросить просто), он всё равно будет подсчитывать.
[5, 5, 5, 5, 5, 5, 5, 5]
Вот он в середине встанет и начнёт считать от начала до конца, хотя к середине уже ясно, что пятёрка встречается два раза.
hottabov
Задачка взята со степика, ТС, ты все так задачи решаешь?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB