自分で書いて感動したので共有。
AtCoderのABC問題を解いていて、配列に入っている各要素を一度に操作して値を確かめたかったので、これをmapとlambdaを使ってやってみた。
実際には「与えられた各文字列に特定の文字が含まれているかどうか確認し、いくつの文字列が該当するか答えよ」という趣旨の問題。
ここでは、 a
という文字を含んだ文字列が配列中にいくつあったかを数えている。
params = ['aaa', 'abc', 'bbb', 'bac', 'ccc', 'cac']
print(sum(map(lambda p: 'a' in p, params)))
こんな感じ。
map関数によってlambdaで定義された操作が各要素に適用され、 a
という文字を含んでいたら True
、なければFalse
を返す。
これにsumを適用すると、Trueの要素が数え上げられて合計数が計算される。
forを使って要素を一つずつ見ていってもよいが、簡単な操作を行うだけだったらこっちのほうが簡単に実装できる。
参考: 【Python】map()関数とlambdaでリストの要素をすべて変更する – サンプルコード付 | ITエンジニアラボ