Как узнать, сколько одинаковых элементов в списке?

Подскажите пожалуйста как узнать сколько в списке элементов с определенным именем, например Иван. Или сколько людей с одинаковой фамилией.

l=['Круглов Алексей', 'Ворожейкин Борис', 'Митин  Сергей', 'Алешин Сергей']


name=l.count('Сергей')

Этот метод не срабатывает для части слова,нашел вот такое решение:

print(sum(map(lambda x:1 if 'Сергей' in x else 0, l)))

Но это пока не мой уровень)), нужно что то простое, без циклов. Спасибо.


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

Автор решения: Zhenia Kviatkivskyi

Предлагаю фамилии записать в отдельный список)))

from collections import Counter
my_list = ['анна', 'петя', 'анна', 'петя', 'сережа', 'алена']
result= Counter(my_list)
    
print('**',result)

# ** Counter({'анна': 2, 'петя': 2, 'сережа': 1, 'алена': 1})
→ Ссылка
Автор решения: Miks Blake

Судя по тому, что циклы вы ещё не проходили, то предложу "глупый" вариант:

name_list = ['Круглов Алексей', 'Ворожейкин Борис', 'Митин  Сергей', 'Алешин Сергей']
if 'Сергей' in name_list[0]:
    print(name_list[0])
if 'Сергей' in name_list[1]:
    print(name_list[1])
if 'Сергей' in name_list[2]:
    print(name_list[2])
if 'Сергей' in name_list[3]:
    print(name_list[3])

Но я бы всё же вам рекомендовал что-то типо такого:

name_list = ['Круглов Алексей', 'Ворожейкин Борис', 'Митин  Сергей', 'Алешин Сергей']
for name in name_list:
    if 'Сергей' in name:
        print(name)
→ Ссылка
Автор решения: Dmitry

List comprehension решает в одну строку

l=['Круглов Алексей', 'Ворожейкин Борис', 'Митин  Сергей', 'Алешин Сергей']
result = len([i for i in l if "Сергей" in i])

Результат будет длина списка, в каждом члене которого есть Сергей

То же самое, но на "понятном" языке

>>> counter = 0
>>> for item in l:
...   if "Сергей" in item:
...     counter += 1
... 
>>> counter
2
→ Ссылка