まくまくPythonノート
リスト内の条件に一致する要素の数を数える
2014-04-21

リストの内包表記などを駆使すると、リスト内の要素のうち、条件に一致するものの数を調べる、といったコードを一行で記述することができます。

下記の例では、リストに含まれている要素のうち、10 より大きい数がいくつあるかを調べています。 条件に一致するかどうかの結果のリスト (True or False) を作って、True の数を足し合わせることで、条件に一致した要素数を求めています。

例: 10より大きい要素を数える

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 を作ってその長さを調べる方法
2014-04-21