Python

Задача на Python

Напиши программу, которая принимает натуральное число n, а затем n целых чисел. Выведи только неуникальные числа — в том же порядке, в каком они поступили.
Самый простой и самый неэффективный способ:
 a = [int(input()) for _ in range(int(input()))]
print(*[v for v in a if a.count(v) > 1])
Более эффективный способ:
 a, b = [int(input()) for _ in range(int(input()))], {}
for v in a: b[v] = b.get(v, 0) + 1
print(*[v for v in a if b[v] > 1])
Александр Нацибулин
Александр Нацибулин
88 012
Лучший ответ
Евгений Котельников ввод:
3
0
0
0
вывод программы:
0 0 0
правильный вывод:
0
Не уникальные в каком смысле? Те, которые имеют повторы, или те, которые повторяют уже появившиеся?

Если в первом смысле (те, которые имеют повторы), то Андрей ранее дал решение.

Если во втором смысле (те, которые повторяют ранее появившиеся), то вот:
 unique = []  
for x in (int(input()) for _ in range(int(input()))):
if x not in unique:
unique.append(x)
else:
print(x)
Матвей Шибалёв
Матвей Шибалёв
12 091
 python 
n = int(input())
nums = []
for i in range(n):
x = int(input())
nums.append(x)

duplicates = []
for i in nums:
if nums.count(i) > 1 and i not in duplicates:
duplicates.append(i)

for i in nums:
if i in duplicates:
print(i, end=' ')
В первом блоке мы запрашиваем у пользователя количество чисел и сами числа, добавляя их в список nums.
Далее мы создаем список duplicates и добавляем в него неуникальные элементы из списка nums. Если элемент уже есть в списке duplicates, то он не добавляется.
Затем мы выводим все числа из списка nums, которые есть в списке duplicates.
Заметьте, что print(i, end=' ') печатает числа через пробел без перевода строки.
Данил Смирнов
Данил Смирнов
3 720
боже челы.... list(set(old_list)). всё!
Александр Нацибулин Ты невнимательно прочитал вопрос. Нужен список только тех значений, которые встречаются более одного раза.