Я вступаю намного позже в это обсуждение. Хотя я бы хотел решить эту проблему с одним вкладышем. Потому что это прелесть Python.
если мы просто хотим поместить дубликаты в отдельный список (или любую коллекцию), я бы предложил сделать это следующим образом. Скажем, у нас есть дублированный список, который мы можем назвать «target»
target=[1,2,3,4,4,4,3,5,6,8,4,3]
Теперь, если мы хотим получить дубликаты, мы можем использовать один вкладыш, как показано ниже:
duplicates=dict(set((x,target.count(x)) for x in filter(lambda rec : target.count(rec)>1,target)))
Этот код будет помещать дублированные записи в качестве ключа и считать как значение в словарь «дубликаты». «Дубликат» словарь будет выглядеть следующим образом:
{3: 3, 4: 4} #it saying 3 is repeated 3 times and 4 is 4 times
Если вы просто хотите, чтобы все записи с дубликатами остались в списке, это снова намного более короткий код:
duplicates=filter(lambda rec : target.count(rec)>1,target)
Вывод будет:
[3, 4, 4, 4, 3, 4, 3]
Это прекрасно работает в python 2.7.x + версии