고차 기능과 개념지도 / 필터 / 감소

기능 어떤 종류의 higher-order 함수 호출 : 지도 (FUNC, * 반복 가능 객체) ->지도 개체
  조건 : 1. 함수는 매개 변수로 함수를 받아들이
     포함 된 기능 2. 함수의 반환 값을
num_l = [1,2,3,4,5,6] 
: B = 맵 (X ** 2 num_l 람다 X)
인쇄 (B)
I에 대한 B :
  인쇄 (I)
>>> 0x0000023023782358 AT <Map 객체 > # 맵 오브젝트 반복자이다 리턴
  . 1
  . 4
  . 9
  16
  25
  36
num_l = [1,2,3,4,5,6] 
DEF의 add_one (X). # (λ)는 X (λ)에 상당 인자로서 기능 할 수있다 : (1) X +
. 복귀 한 X +
DEF의 reduce_one (X) :
리턴 . 1-X
DEF map_number (FUNC 배열) 파라미터 # 캡슐화 처리의 함수로서 전달 함수
RET = []
: num_l에서 I위한
RES = FUNC (I) 또는 #add_one reduce_one
ret.append (RES)
창 RET의

전단 (map_number (add_one, num_l)) #에 map_number ((람다 X :. X + 1) num_l)

>>> [2 ,. 3 ,. 4 ,. 5 ,. 6 ,. 7]

상기 코드가 실제로는 () 함수를 매핑한다! 실수로 내장 함수지도를 완성! : 등가 맵 (X + 1의) num_l (람다 X.)

의 차 함수 필터 - 필터 (함수 또는 없음, 반복 가능한) -> 필터 오브젝트
  
예 :
all_starts = 코비 ','kg ','AI ','Jorden ','jamse ','sb_zhouqi ','sb_guoailun '] 
DEF filter_test (배열) :
RET = []
에 대한이 I 배열에서 :
IF하지 I. startsWith ( "SB")
ret.append (I)
RET 반환
RES = filter_test (all_starts)
인쇄 (RES)
>>> [코비 ','kg ','AI ','Jorden ','jamse ']
전술 예를 들면, 본 로직 또는 루프의 실현,하지만 프로세스가없는 경우 어떻게 SB 시작해야 할 수 있는가? XX는 수행하는 방법의 중간에 처리?
이 논리에서 별도의 함수로 기록 될 수 있도록, 그것은 매우 잘 사용됩니다 위의지도 기능으로, 당신이 처리 할 수있는 기능 및 처리 로직을 나에게 반복 객체를 준, 난 당신을 다루는거야!
유일한 차이는,이 경우 논리 BOOL, 참 또는 거짓을 통해 여과 결정하기 때문이다 기능 논리 엘리먼트를 제외하고 , 필터 기능이 등장 할 때를! 필터는 유지
기능 논리 요소를 충족!
all_starts = 코비 ','kg ','AI ','jorden ','jamse ','sb_zhouqi_sb ','sb_guoailun_sb '] 
DEF sb_show (N) :
리턴 n.endswith ( "SB")
DEF filter_test (FUNC 어레이)
RET = []
의 I 배열 :
하지 FUNC (I)의 경우 :
ret.append (ⅰ)
반송 RET의

입술 = filter_test (sb_show, all_starts)
인쇄 (해상도)
실수로 기능이 밖으로 건설 필터링! 이 배열의 반복 각 요소 기능의 앞쪽 밖으로 개체로 의미하고, 그 결과 실제 유지한다 
거짓의 처리가 폐기의 결과.

궁극적 인 버전 : RET = 필터 (람다 X :하지 x.startswith ( 'SB'), 배열)
     인쇄 (목록 (RET))
   >>> [ '고베', 'kg', 'AI', 'Jorden', ' jamse ']

---의 고차 기능 감소
줄이거 functools 오기로부터










추천

출처www.cnblogs.com/qyan-blog/p/11716958.html