Форум сайта python.su
Здравствуйте. Нужно: чтоб программа принимала на вход список чисел в одной строке и выводила на экран в одну строку значения, которые повторяются в нём более одного раза.
…python3
Отредактировано Stroncy (Ноя. 20, 2014 19:39:08)
Офлайн
>>> 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]
print ([x for x in set(list_of_num) if list_of_num.count(x) > 1])
Отредактировано botinag (Ноя. 20, 2014 19:41:59)
Офлайн
botinag вроде оно но, подскажите как сделать чтоб вывод был без скобок.. просто числа?
..и ввод надо так: str(input()) ?
Например ввёл(через пробел): 1 2 3 4 5 5 6 7 3 1
и получил вывод: 1 3 5
Отредактировано Stroncy (Ноя. 20, 2014 19:54:33)
Офлайн
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))
Отредактировано botinag (Ноя. 20, 2014 19:59:47)
Офлайн
Stroncy
подскажите как сделать чтоб вывод был без скобок.. просто числа?
' '.join([x for x in set(list_of_num) if list_of_num.count(x) > 1])
Офлайн
botinagСпасибо, ваш код подошёл ))
string = input('Vvedite chisla razdelyaya ih probelami: ‘)
list_of_num = string.split(’ ')
res =
print(' '.join(res))
Офлайн
Предположим, что вводится миллиард чисел. Нужно без .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] >>>
Отредактировано py.user.next (Ноя. 21, 2014 03:15:40)
Офлайн
py.user.nextВозможно.. но, тест прошёл ))
Предположим, что вводится миллиард чисел. Нужно без .count() делать.
Офлайн
Тут проблема в том, что он будет по всему миллиарду проходить на каждом элементе. А те элементы, которые уже выяснены (которые нужно отбросить просто), он всё равно будет подсчитывать.
[5, 5, 5, 5, 5, 5, 5, 5]
Офлайн
Задачка взята со степика, ТС, ты все так задачи решаешь?
Офлайн