计算字符串中的小写字符

mho*_*son 7 python

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

这是我想到的第一件事:

def n_lower_chars(string):
    return sum([int(c.islower()) for c in string])
Run Code Online (Sandbox Code Playgroud)

bra*_*zzi 12

你聪明的伎俩!但是,我发现过滤较低的字符更具可读性,每个字符加1.

def n_lower_chars(string):
    return sum(1 for c in string if c.islower())
Run Code Online (Sandbox Code Playgroud)

  • 对于以内存有效方式用于字节字符串,Unicode字符串,Python 2,Python 3的版本,则为+1。 (2认同)

Swi*_*iss 7

def n_lower_chars(string):
    return len(filter(str.islower, string))
Run Code Online (Sandbox Code Playgroud)

  • +1。如果输入是字符串,则Python 2上的`filter()`返回一个字符串,因此它占用的内存不会超过两倍,并且在大多数情况下,它比生成器上的`sum()`要快。尽管len(filter())在Python 3上中断,并返回迭代器。 (2认同)

Mar*_*ina 5

def n_lower_chars(string):
    return sum(map(str.islower, string))
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过用str.islower替换lambda表达式来将计算时间减少一半。 (2认同)
  • 直到现在,我才知道在外壳程序中运行`In [39]:sum([True,True,False,False,True])Out [39]:3`。 (2认同)