4

これ以外に、述語関数が真である要素の数を数えるより良い方法はありますか:

PredCount[lst_, pred_] := Length@Select[lst, pred];

lstwithのサブセットを構築するのは非効率的であり、パターンでのみ機能するSelect[]ため、私は尋ねています。Count[]私のユースケースでは、関数PredCountは大きな で何度も呼び出されlstます。

4

2 に答える 2

10

多くの場合、述語を条件付きのパターンに変えることでこれを行うことができます。例えば:

Count[list, x_/;x>5]

リスト内の 5 より大きい要素の数をカウントします。

于 2012-04-27T04:47:05.120 に答える
2

私は使うだろうPatternTest

PredCount = Count[#, _?#2] &;

PredCount[Range@30, PrimeQ]
(*out*) 10

Countこのパターンは、直接使用できるほど単純です。

于 2012-04-27T21:01:25.190 に答える