是否有一种使用list comprehension完成以下操作的方法?还是有更多的毕达通方式来实现这一点?
count = 0
x = 'uewoiquewqoiuinkcnsjk'
for letter in x:
if letter in ['a', 'e', 'i', 'o', 'u']:
count += 1只是想学习最好的编程实践?
发布于 2016-10-04 01:27:30
由于in生成True或False,True和False 可以可靠地使用为1和0,所以可以在生成器中使用sum:
sum(c in 'aeiou' for c in x) 或者过滤器+连:
len(filter(lambda c: c in 'aeiou', x))相反,一个很好的方法是使用str.translate删除字符串中的字符:
>>> x.translate(None, 'aeiou')
wqwqnkcnsjk所以你可以做:
len(x)-len(x.translate(None, 'aeiou'))在所有情况下,答案都是10
发布于 2016-10-04 01:23:52
使用list_comprehension和len函数的组合。
>>> x = 'uewoiquewqoiuinkcnsjk'
>>> len([i for i in x if i in 'aeiou'])
10
>>> https://stackoverflow.com/questions/39842831
复制相似问题