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

Wolfram mathematica 计算匹配谓词的元素数的惯用方法是什么?,wolfram-mathematica,Wolfram Mathematica,是否有更好的方法来计算谓词函数为true的元素数,除此之外: PredCount[lst_, pred_] := Length@Select[lst, pred]; 我这样问是因为用Select[]构造lst的子集似乎效率低下,而且Count[]只对模式有效。在我的用例中,函数PredCount被多次调用,使用一个大的lst您通常可以通过将谓词转换为带有条件的模式来实现这一点。例如: Count[list, x_/;x>5] 将计算列表中大于5的元素数。我将使用 此模式非常简单,您可以

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

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

我这样问是因为用
Select[]
构造
lst
的子集似乎效率低下,而且
Count[]
只对模式有效。在我的用例中,函数
PredCount
被多次调用,使用一个大的
lst

您通常可以通过将谓词转换为带有条件的模式来实现这一点。例如:

Count[list, x_/;x>5]
将计算列表中大于5的元素数。

我将使用


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

Aha!有没有理由不把它推广到计数[lst,x /;pred[x]中,然后就这样做了?
PredCount = Count[#, _?#2] &;

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