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
提交
取消