2 回答

TA貢獻(xiàn)2003條經(jīng)驗(yàn) 獲得超2個(gè)贊
所以,最簡(jiǎn)單的方法是直接使用str.count()
:
lambda word : word.lower().count('a')
如果你想使用類似你的代碼的東西,即使用for
循環(huán)而不是count()
方法,那么在你的 lambda 表達(dá)式中使用列表理解:
lambda word : sum([int(letter == 'a') for letter in word])
如果您想計(jì)算更多元音或更多字母,請(qǐng)使用兩個(gè)參數(shù):
lambda word,letters : sum([int(letter in letters) for letter in word])
并感謝@ShadowRanger 的更正,在早期版本中,我錯(cuò)誤地if word else 0
在每個(gè)表達(dá)式中添加了一個(gè)語句,這絕對(duì)是不必要的。

TA貢獻(xiàn)1863條經(jīng)驗(yàn) 獲得超2個(gè)贊
您的代碼:
def number_of_vowels(word):
i = 0
lower = word.lower()
for char in lower:
if char in 'a':
i += 1
return(i)
只是一個(gè)很長(zhǎng)的拼寫方法:
def number_of_vowels(word):
return word.lower().count('a')
其中(盡管名稱)僅計(jì)算a/A字符,而不是所有元音。該lambda等效是:
lambda word: word.lower().count('a')
如果您想讓它計(jì)算所有元音,仍然可以使用sum函數(shù)和生成器表達(dá)式:
lambda word: sum(1 for let in word.lower() if let in 'aeiouy')
添加回答
舉報(bào)