文字列内の小文字の文字数を数えるための最もPython的および/または効率的な方法は何ですか?
最初に頭に浮かんだのは次のとおりです。
def n_lower_chars(string):
return sum([int(c.islower()) for c in string])
文字列内の小文字の文字数を数えるための最もPython的および/または効率的な方法は何ですか?
最初に頭に浮かんだのは次のとおりです。
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)