2012-04-27 3 views
3

이 아닌 다른 술어 함수가 true 인 요소의 수를 계산하는 더 좋은 방법이 있나요 :술어와 일치하는 요소의 수를 계산하는 관용적 인 방법은 무엇입니까?

PredCount[lst_, pred_] := [email protected][lst, pred]; 

Select[]lst의 일부를 구성하는 비효율적 인 것 때문에 내가 부탁 해요, 그리고 Count[]은 패턴에서만 작동하기 때문입니다. 내 사용의 경우 함수 PredCount을 큰 번호 lst과 함께 여러 번 호출합니다.

답변

7

조건이있는 패턴으로 조건자를 바꾸면됩니다. 예를 들어

Count[list, x_/;x>5] 

이 패턴은 간단 이상 5.

+0

아하! 이것을 'Count [lst, x_ /;]로 일반화하지 않는 이유. pred [x]]'그것을 끝내야합니까? – Gleno

+0

아니요, 바로 시작하십시오. –

2

I가 PatternTest

PredCount = Count[#, _?#2] &; 

PredCount[[email protected], PrimeQ] 
(*out*) 10 

사용하는 것이있다리스트의 요소의 수를 카운트 할 당신이 직접 Count을 사용할 수있을만큼 충분합니다.

관련 문제