什么是计算字符串中小写字符数的最pythonic和/或有效方法?
这是我想到的第一件事:
def n_lower_chars(string):
return sum([int(c.islower()) for c in string])
你聪明的伎俩!但是,我发现过滤较低的字符更具可读性,每个字符加1。
def n_lower_chars(string):
return sum(1 for c in string if c.islower())
此外,我们不需要为此创建新列表,因此删除[]
将使sum()
在迭代器上工作,这会消耗更少的内存。
def n_lower_chars(string):
return len(filter(str.islower, string))
def n_lower_chars(string):
return sum(map(str.islower, string))
如果你想更精细地划分事物:
from collections import Counter
text = "ABC abc 123"
print Counter("lower" if c.islower() else
"upper" if c.isupper() else
"neither" for c in text)