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)
2 回答
湖上湖
TA贡献2003条经验 获得超2个赞
所以,最简单的方法是直接使用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
在每个表达式中添加了一个语句,这绝对是不必要的。
小唯快跑啊
TA贡献1863条经验 获得超2个赞
您的代码:
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')
添加回答
举报
0/150
提交
取消