Вопрос Задача на python

Регистрация
5 Ноя 2013
Сообщения
74
Репутация
0
Спасибо
0
Монет
0
Напиши программу, которая принимает натуральное число n, а затем n целых чисел. Выведи только неуникальные числа — в том же порядке, в каком они поступили.
 
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=' ') печатает числа через пробел без перевода строки.
 
боже челы.... list(set(old_list)). всё!
 
Самый простой и самый неэффективный способ: 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])
 
Не уникальные в каком смысле? Те, которые имеют повторы, или те, которые повторяют уже появившиеся?

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

Если во втором смысле (те, которые повторяют ранее появившиеся), то вот: unique = []
for x in (int(input()) for _ in range(int(input()))):
if x not in unique:
unique.append(x)
else:
print(x)
 
Назад
Сверху