python 文字列中の小文字・大文字の数をカウント!

文字列中の小文字をカウント

sum関数とmap関数を使用

s = "ABCdef"
#①
cnt = sum(map(str.islower, s))
print(cnt)
"""出力
3
"""
  • #①:
    • map(str.islower, s)によって、3つのTrueが含まれるイテレータが返されます。
    • sum関数によってTrueの個数の和である3が返されます。Trueは1と等しいので、sum関数の結果が3になります。

ジェネレータ式を使用

s = "ABCdef"
#①
cnt = sum(1 for c in s if c.islower())
print(cnt)
"""出力
3
"""
  • #①:
    • ジェネレータ式「1 for c in s if c.islower()」により、sの各文字(Aからf)がif文の条件を満たす場合はジェネレータに値が1の要素が追加されます。1を3つ含むジェネレータがsum関数に与えられます。
    • sumは3を返します。
    • 補足:sum(ジェネレータ式)の形式になっていますが、sumの引数がジェネレータ式だけであるため、ジェネレータ式を囲む()は省略可能です。そのため、省略して記述しています。省略しない場合は、sum((ジェネレータ式))です。

文字列中の大文字をカウント

章「文字列中の小文字をカウント」を参照してください。

章「文字列中の小文字をカウント」のコード内のislowerとなっている個所をisupperに修正することで、文字列中の大文字をカウントできます。

参考

python – Count lower case characters in a string – Stack Overflow
本記事に書かれていない方法についても記載されています。

ジェネレータ式の文法について調べてみた
ジェネレータ式を関数の唯一の引数として渡す時はジェネレータ式の()を省略できることがわかります。

コメント

タイトルとURLをコピーしました