为了账号安全,请及时绑定邮箱和手机立即绑定

在 Python 中将定义的函数更改为 lambda 函数

在 Python 中将定义的函数更改为 lambda 函数

qq_遁去的一_1 2021-11-02 15:11:05
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在每个表达式中添加了一个语句,这绝对是不必要的。


查看完整回答
反对 回复 2021-11-02
?
小唯快跑啊

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')


查看完整回答
反对 回复 2021-11-02
  • 2 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信