def char(word):
lower = word.lower()
for letters in lower:
number = letters.count('a')
return(number)
我上面有一个已定义的函数,并且我试图将其更改为lambda函数。我应该怎么做? :)
(更新)下面的此功能如何?我试图用一个字来计算所有的“ a”,但是看评论似乎我错了。如果下面的代码方向正确,如何转换为lambda函数?
def number_of_vowels(word):
i = 0
lower = word.lower()
for char in lower:
if char in 'a':
i += 1
return(i)
答案 0 :(得分:0)
您的代码:
def number_of_vowels(word):
i = 0
lower = word.lower()
for char in lower:
if char in 'a':
i += 1
return(i)
只是很长的拼写方式:
def number_of_vowels(word):
return word.lower().count('a')
(尽管有名称)
仅计算a
/ A
个字符,而不是全部元音。等效的lambda
为:
lambda word: word.lower().count('a')
如果您想让它计数全部 个元音,则可以使用sum
函数和生成器表达式来实现:
lambda word: sum(1 for let in word.lower() if let in 'aeiouy')
答案 1 :(得分:0)
因此,最简单的方法是直接使用str.count()
:
lambda word : word.lower().count('a')
如果您想使用类似您的代码的方法,即使用for
循环而不是count()
方法,请在lambda表达式中使用列表推导:
lambda word : sum([int(letter == 'a') for letter in word])
如果您想计算更多的元音或更多的字母,请使用两个参数:
lambda word,letters : sum([int(letter in letters) for letter in word])
感谢@ShadowRanger的更正,在较早的版本中,我错误地在每个表达式中添加了if word else 0
语句,这绝对是不必要的。