リストの内包表記などを駆使すると、リスト内の要素のうち、条件に一致するものの数を調べる、といったコードを一行で記述することができます。
下記の例では、リストに含まれている要素のうち、10 より大きい数がいくつあるかを調べています。
条件に一致するかどうかの結果のリスト (True
or False
) を作って、True
の数を足し合わせることで、条件に一致した要素数を求めています。
arr = [23, 6, 22, 3, 38, 15]
n = sum(x>10 for x in arr) # 真偽値リストを作って True の数を合計する方法
下記のように記述することもできます。 条件に一致するものの数だけ新しいリスト(あるいは generator)に 1 を詰めていき、最後にそのサイズを調べています。
n = sum(1 for x in arr if x>10) # generator を作って値を合計する方法(すべての要素が1なので合計=要素数)
n = sum([1 for x in arr if x>10]) # list を作って値を合計する方法
n = len([1 for x in arr if x>10]) # list を作ってその長さを調べる方法