Python如何仅用列表推导式筛选出含3个及以上元音的单词
完全可以仅使用列表推导式实现该需求,无需额外定义外置函数,具体实现如下:
完整实现代码
fruits = ['mango', 'kiwi', 'strawberry', 'guava', 'pineapple', 'mandarin orange'] # 定义元音集合,用于快速成员判断 vowels = {'a', 'e', 'i', 'o', 'u'} # 列表推导式筛选元音数量大于2的水果 fruits_with_more_than_two_vowels = [ fruit for fruit in fruits if sum(1 for char in fruit if char in vowels) > 2 ]
逻辑说明
- 用集合存储元音字符,相比列表成员查询效率更高,小数据量下也可替换为列表
['a','e','i','o','u'] - 推导式的判断条件中嵌套了轻量的生成器表达式,遍历水果名称的每个字符,统计元音字符总数
- 仅保留元音总数大于2的水果名称
运行结果
打印fruits_with_more_than_two_vowels可得到筛选结果:
['strawberry', 'guava', 'pineapple', 'mandarin orange']
内容的提问来源于stack exchange,提问作者jeff
相关产品推荐
相关产品推荐

