2015-04-11 5 views
-6

у меня есть 2 списка, как это:Подсчет количества вхождений в списке

prefix = ['b', 'bo', 'br'] 
word = ['bring', 'boring', 'bold', 'bells'] 

Как подсчитать сколько раз каждый префиксы в списке слов?

Она должна возвращать

[4, 2, 1] 
+1

Что вы пытаетесь так далеко? вам нужны вложенные циклы, чтобы перебирать оба списка и находить внешний вид элементов первого списка во втором списке, используя оператор 'in' –

ответ

3

Использование списка понимание, str.startswith и sum

[sum(w.startswith(p) for w in word) for p in prefix] # [4, 2, 1] 
+0

отлично, спасибо! теперь вы можете дать мне ответ с помощью карты, уменьшить или фильтровать функцию? я пытаюсь понять, как это работает – RealQ

+0

@RealQ эквивалентная функциональность может быть достигнута с помощью 'map (lambda p: sum (w.startswith (p) для w в слове), префикс)' – vaultah

+0

@RealQ oh и 'map (sum, ((w.startswith (p) для w в слове) для p в префиксе)). – vaultah

-1

как в принятом ответе, но используя карту():

outl = map(lambda p: sum(w.startswith(p) for w in word), prefix) 
Смежные вопросы