9

文字列内の小文字の文字数を数えるための最もPython的および/または効率的な方法は何ですか?

最初に頭に浮かんだのは次のとおりです。

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 に答える