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 回答