Для меня это неправильное использование lambda
для начала, так как lambda
должны быть определениями функций без имени или более или менее одноразовой функцией. Кроме того, причина, по которой вы получили синтаксическую ошибку, заключается в том, что ваше выражение генератора неверно, используйте sum
для чего-то подобного.
result = lambda y: sum(1 for x in y if x in "aeoiuAEIOU")
Вы даже можете использовать карту для этого:
result = lambda y: sum(map(y.count, "aeoiuAEIOU"))
Но это может быть сделано более разборчиво и более корректно с помощью фактического определения функции, и вы можете включить больше операторов
#more appropriately named count_vowels vs result and s vs y
def count_vowels(s):
_s = s.lower()
return sum(map(_s.count, 'aeiou')
Вы также можете использовать re
(регулярное выражение) для этого тоже:
import re
def count_vowels(s): return len(re.findall("[aeiou]", s, re.I))
re.I
игнорирует регистр, поэтому не нужно беспокоиться о capsvs uncaps