9

计算字符串中小写字符数的最pythonic和/或最有效的方法是什么?

这是首先想到的:

def n_lower_chars(string):
    return sum([int(c.islower()) for c in string])
4

4 回答 4

14

你的绝招!但是,我发现过滤较低的字符更易读,每个字符加 1。

def n_lower_chars(string):
    return sum(1 for c in string if c.islower())

此外,我们不需要为此创建一个新列表,因此删除该列表[]将使sum()迭代器工作,这会消耗更少的内存。

于 2012-06-08T17:15:00.083 回答
9
def n_lower_chars(string):
    return len(filter(str.islower, string))
于 2012-06-08T17:18:54.277 回答
5
def n_lower_chars(string):
    return sum(map(str.islower, string))
于 2012-06-08T17:17:09.720 回答
2

如果您想更精细地划分事物:

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)
于 2012-06-08T17:42:07.743 回答