Skip to main content
 首页 » 编程设计

python之使用列表理解完成任务的方法

2025年05月04日10lori

有没有一种方法可以使用列表理解来完成以下操作?还是有更 Pythonic 的方式来完成这个?

count = 0 
x = 'uewoiquewqoiuinkcnsjk' 
for letter in x: 
    if letter in ['a', 'e', 'i', 'o', 'u']: 
        count += 1 

只是想学习最佳编程实践?

请您参考如下方法:

由于 in 生成了 True 或 False 以及 True 和 False can reliably be used作为 1 和 0 您可以将 sum 与生成器一起使用:

sum(c in 'aeiou' for c in x)  

或者过滤器+len:

len(filter(lambda c: c in 'aeiou', x)) 

做相反的一个好方法是使用 str.translate 删除字符串中的字符:

>>> x.translate(None, 'aeiou') 
wqwqnkcnsjk 

那么你可以这样做:

len(x)-len(x.translate(None, 'aeiou')) 

在所有情况下,答案都是10