Wolfram mathematica 计算匹配谓词的元素数的惯用方法是什么?
是否有更好的方法来计算谓词函数为true的元素数,除此之外: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的元素数。我将使用 此模式非常简单,您可以
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