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
コメント