Python: подсчитать количество вхождений элементов списка в строку

#python #list #python-2.7

#python #Список #python-2.7

Вопрос:

Если у меня есть следующий список

 vowels = ["a","e","i","o","u"]
  

и другой список

 words = ["happiness", "yellow"]
  

как мне подсчитать количество гласных в каждом слове, т. Е. Счастье = 3, желтый = 2?

Комментарии:

1. Разбейте проблему на более простые … Как вы подсчитываете количество вхождений ОДНОЙ буквы в строке? Как только у вас это получится, вы можете просмотреть список букв и добавить результат этой функции.

2. Этот вопрос, похоже, не по теме, потому что это не служба написания кода, и здесь уже есть десятки вопросов о подсчете гласных с использованием Python.

Ответ №1:

Используя понимание списка:

 >>> vowels = ["a","e","i","o","u"]
>>> words = ["happiness", "yellow"]
>>> [sum(c in vowels for c in word) for word in words]
[3, 2]
  

Если вы хотите сопоставить слова и вхождения, используйте понимание по словарю:

 >>> {word: sum(c in vowels for c in word) for word in words}
{'happiness': 3, 'yellow': 2}
  

Преобразование vowels в set сделает его более эффективным.

Ответ №2:

 data = [0]*len(words)                # Initializing the data list
for index, word in enumerate(words): # Iterating through the list of words
 for letter in list(word):
  if letter in vowels:               #checking if the letter is in vowels
   data[index] = data[index] 1
print data
  

данные теперь содержат количество гласных, соответствующих тому же индексу, что и список слов. Приветствия! 🙂