有没有更好的方法来计算谓词函数为真的元素的数量,除了这个:
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
直接使用。