亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 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 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號