Python 내장 함수 filter (), map (), reduce (), lambda

2958 단어
1、filter(function, sequence)
sequence의 item에 대해 순서대로 function (item) 을 실행하고, 실행 결과가 True인 item을 List/String/Tuple (sequence의 유형에 따라 다름) 로 되돌려줍니다.
예:
>>> def f(x): return x % 2 != 0 and x % 3 != 0 
>>> filter(f, range(2, 25)) 
[5, 7, 11, 13, 17, 19, 23]
>>> def f(x): return x != 'a' 
>>> filter(f, "abcdef") 
'bcdef'

2、map(function, sequence) 
sequence의 item에 대해 순서대로 function (item) 을 실행하고, 실행 결과를 보십시오.
예:
>>> def cube(x): return x*x*x 
>>> map(cube, range(1, 11)) 
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
>>> def cube(x) : return x + x 
... 
>>> map(cube , "abcde") 
['aa', 'bb', 'cc', 'dd', 'ee']

또한 맵도 여러 개의 sequence를 지원합니다. 이것은function도 상응하는 수량의 매개 변수 입력을 지원해야 합니다.
예:
>>> def add(x, y): return x+y 
>>> map(add, range(8), range(8)) 
[0, 2, 4, 6, 8, 10, 12, 14]

3、reduce(function, sequence, starting_value)
sequence의 item 순서를 function으로 교체합니다. starting_value, 초기 값으로 호출할 수도 있습니다. 예를 들어 List에 대한 호출
예:
>>> def add(x,y): return x + y 
>>> reduce(add, range(1, 11)) 
55 ( :1+2+3+4+5+6+7+8+9+10)
>>> reduce(add, range(1, 11), 20) 
75 ( :1+2+3+4+5+6+7+8+9+10+20)

4、lambda
이것은 Python이 지원하는 재미있는 문법입니다. 이것은 한 줄의 최소 함수를 빠르게 정의할 수 있도록 합니다. C 언어의 매크로와 유사합니다. 이 함수들은 LISP에서 빌려온 것입니다. 함수가 필요한 곳에 사용할 수 있습니다.
예:
>>> g = lambda x: x * 2 
>>> g(3) 
6 
>>> (lambda x: x * 2)(3) 
6

lambda 표현식은 함수 대상을 되돌려줍니다.
예:
func = lambda x,y:x+y

func는 다음 함수에 해당합니다.
def func(x,y):
    return x+y

주의: def는 문장이고 lambda는 표현식이다. 아래 상황에서 lambda만 사용할 수 있고 def는 사용할 수 없다
[(lambda x:x*x)(x) for x in range(1,11)]

맵,reduce,filter의function은 모두 lambda 표현식으로 생성할 수 있습니다!
map(function,sequence)
sequence의 값을 매개 변수로 각각function에 전달하고 함수 실행 결과를 포함하는list를 되돌려줍니다.
만약function에 두 개의 매개 변수가 있다면, 즉 맵(function,sequence1,sequence2)이다.
예:
구1*1,2*2,3*3,4*4
map(lambda x:x*x,range(1,5))

반환값은 [1,4,9,16]
reduce(function,sequence)
function 수신 매개 변수 개수는 2
먼저 sequence의 첫 번째 값과 두 번째 값을 매개 변수로 function에 전달한 다음, function의 반환 값과 세 번째 값을 매개 변수로 전달한다
function, 그리고 결과 하나만 되돌려줍니다.
예:
1부터 10까지의 누적을 구하다
reduce(lambda x,y:x+y,range(1,11))

반환값은 55입니다.
 
filter(function,sequence)
function 의 반환 값은 True 또는 False 만 가능합니다.
sequence의 값을 매개 변수로 function에 전달하고, function (x) 의 반환 값이 True라면, x를 필터의 반환 값에 추가합니다.일반적으로 필터의 반환값은list이며, 특수한 상황인 sequence는string이나tuple이며, 반환값은sequence의 유형에 따른다.
예:
1에서 10 사이의 홀수를 찾아내다
filter(lambda x:x%2!=0,range(1,11))

반환값
[1,3,5,7,9]

좋은 웹페이지 즐겨찾기