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

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)   


qq_遁去的一_1
浏览 144回答 2
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在每个表达式中添加了一个语句,这绝对是不必要的。

小唯快跑啊

您的代码: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')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python