有没有更好的方法来计算谓词函数为true的元素数量,除此之外:
PredCount[lst_, pred_] := Length@Select[lst, pred];
我问,因为使用lst
构建Select[]
的子集似乎效率低下,因为Count[]
仅适用于模式。在我的用例中,使用大PredCount
多次调用函数lst
。
答案 0 :(得分:8)
您通常可以通过将谓词转换为具有条件的模式来执行此操作。例如:
Count[list, x_/;x>5]
将计算列表中大于5的元素数。
答案 1 :(得分:2)
我会使用PatternTest
PredCount = Count[#, _?#2] &;
PredCount[Range@30, PrimeQ]
(*out*) 10
此模式非常简单,您可以直接使用Count
。