python3  リストから条件と一致する要素数を得る

sum()とジェネレータ式を使用

下記コードのwa = sum(i % 2 == 0 for i in l)のsum()内はジェネレータ式と呼ばれるものです。本方法は、ジェネレータ式(*1)を使用します。

Trueは1に等しいため(*2)、例えばprint(sum([True, True]))とした時に2が出力されます。同様に、sum(i % 2 == 0 for i in リスト))とした時にTrueの数がカウントされます。

(*1)ジェネレーター式と内包表記を使ってみよう:特集:Visual Studioで始めるPythonプログラミング(1/2 ページ) – @IT (atmarkit.co.jp)が参考になります。
(*2)Convert bool (True, False) and other types to each other in Python | note.nkmk.meのTrue and False are equivalent to 1 and 0 が参考になります。

l = [1, 2, 3, 4, 5, 6]
wa = sum(i % 2 == 0 for i in l)
print("wa:",wa)
"""
出力は下記です。
wa: 3
"""

sum()とmap()を使用

l = [1, 2, 3, 4, 5, 6]
#条件をラムダ式としてmap関数に渡し、リストの各要素が条件と一致している時に、対応する要素にTrueが入っているイテレータが返されます。このイテレータ内のTrueの数をsum関数でカウントします。
wa = sum(map(lambda i:i >= 5, l))
print("wa:",wa)
"""
出力は下記です。
wa: 2
"""


参考

本記事は下記を参考しました。
Python | Count of elements matching particular condition – GeeksforGeeks
python: get number of items from list(sequence) with certain condition – Stack Overflow

コメント

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