gpt4 book ai didi

python - 从单词列表中计算元音并将数字作为列表返回

转载 作者:太空宇宙 更新时间:2023-11-03 14:41:43 25 4
gpt4 key购买 nike

我只想定义一个函数 number_of_vowels,它返回字符串中元音的数量。

我的代码如下:

vowels='aeiou'
def number_of_vowels(word):
return[len([letter.lower() for letter in word if letter in vowels])]
names = ["Ben", "April", "Zaber", "Alexis", "McJagger", "J.J.", "Madonna"]
number_of_vowels(names)

我的结果只有 [0]。不知道为什么

最佳答案

您正在提供一个列表,但您的逻辑仅适用于单个字符串:

number_of_vowels('Bean')  # [2]

您需要调整函数的输入,或者修改函数以计算列表中每个元素的元音数量。由于您希望输出为数字列表,因此我假设您正在寻找第二个选项。

为此,只需在您的列表理解中添加一个额外的 for 子句:

def number_of_vowels(words):
return [len([letter for letter in word if letter.lower() in vowels]) \
for word in words]

number_of_vowels(names) # [1, 2, 2, 3, 2, 0, 3]

但是,请注意中间列表不是必需的。您可以将 sum 与生成器表达式一起使用,利用事实 True == 1False == 0:

vowels = set('aeiou')

def number_of_vowels(words):
return [sum(letter.lower() in vowels for letter in word) for word in words]

number_of_vowels(names) # [1, 2, 2, 3, 2, 0, 3]

请注意一些进一步的更改以改进您的算法:

  1. 检查元音中的 letter.lower() 而不是仅仅创建一个小写字母列表。否则元音为大写字母,例如在“四月”中,将被忽略。
  2. 将元音转换为 set 查找复杂度为 O(1)。

关于python - 从单词列表中计算元音并将数字作为列表返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52711122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com