Функция подсчёта повторяющихся элементов в итерируемом объекте

Нужно написать функцию, которая принимает итерируемый объект и возвращает количество объектов, которые в этом итерируемом объекте встречаются больше одного раза:

def elements_count(iterable_object):
    summ = 0
    for i in iterable_object:
        if iterable_object.count(i)>1:
            summ += 1
    return (summ)
sequence = input().split(',')
print(elements_count(sequence)) 

Вот код функции, но она выводит не количество повторяющихся элементов, а количество повторов элементов. Например, если мы вводим [1,1,1,2,3,4,4,4,5], то код выводит 6, а нужно 2. В чем ошибка?


Ответы (2 шт):

Автор решения: whizz169
def elements_count(iterable_object):
    x = {i for i in iterable_object if iterable_object.count(i) > 1}
    return len(x)


sequence = input('Input: ').split(',')
print(elements_count(sequence))

Можно использовать множество для элементов, удовлетворяющих условию и просто выводить его длину

→ Ссылка
Автор решения: krumlyakov

Решил проблему таким образом:

def elements_count(iterable_object):
    summ = 0
    for i in set(iterable_object):
        if iterable_object.count(i)>1:
            summ += 1
    return (summ)
sequence = input().split()
print(elements_count(sequence))
→ Ссылка