计算匹配谓词的元素数量的惯用方法是什么?

时间:2012-04-27 03:21:52

标签: wolfram-mathematica

有没有更好的方法来计算谓词函数为true的元素数量,除此之外:

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

我问,因为使用lst构建Select[]的子集似乎效率低下,因为Count[]仅适用于模式。在我的用例中,使用大PredCount多次调用函数lst

2 个答案:

答案 0 :(得分:8)

您通常可以通过将谓词转换为具有条件的模式来执行此操作。例如:

Count[list, x_/;x>5]

将计算列表中大于5的元素数。

答案 1 :(得分:2)

我会使用PatternTest

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

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

此模式非常简单,您可以直接使用Count