有没有一种方法可以使用列表理解来完成以下操作?还是有更 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
