これ以外に、述語関数が真である要素の数を数えるより良い方法はありますか:
PredCount[lst_, pred_] := Length@Select[lst, pred];
lst
withのサブセットを構築するのは非効率的であり、パターンでのみ機能するSelect[]
ため、私は尋ねています。Count[]
私のユースケースでは、関数PredCount
は大きな で何度も呼び出されlst
ます。
これ以外に、述語関数が真である要素の数を数えるより良い方法はありますか:
PredCount[lst_, pred_] := Length@Select[lst, pred];
lst
withのサブセットを構築するのは非効率的であり、パターンでのみ機能するSelect[]
ため、私は尋ねています。Count[]
私のユースケースでは、関数PredCount
は大きな で何度も呼び出されlst
ます。
多くの場合、述語を条件付きのパターンに変えることでこれを行うことができます。例えば:
Count[list, x_/;x>5]
リスト内の 5 より大きい要素の数をカウントします。
私は使うだろうPatternTest
PredCount = Count[#, _?#2] &;
PredCount[Range@30, PrimeQ]
(*out*) 10
Count
このパターンは、直接使用できるほど単純です。