Оставить только дубликаты значений в списке python 3
Задача: в списке значений оставить только дублирующиеся значения. x = [1,2,2,2,3,4,5,6,6,7??], нужно получить результат [2,2,2,6,6,], вариант [2,6] не подходит.
Первый вариант решения, O(n)
from collections import Counter
a = [1, 2, 3, 4, 5, 2, 4, 5]
counts = Counter(a)
print([num for num in a if counts[num] > 1])
Второй вариант решения, O(n^2)
a = [1,2,3,4,5,2,4,5]
b = [x for x in a if a.count(x) > 1]
print(b)
На коротких списках второй вариант решения будет работать быстрее. По умолчанию предпочтительнее использовать первый, если заранее не знаем размерность.