文字列中の小文字をカウント
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
本記事に書かれていない方法についても記載されています。
ジェネレータ式の文法について調べてみた
ジェネレータ式を関数の唯一の引数として渡す時はジェネレータ式の()を省略できることがわかります。
コメント