lambda

Jaho·2021년 12월 7일
0

Python

목록 보기
9/18

lambda의 기본구조

람다는 <인자>를 전달하여 <인자 활용 수행 코드>를 수행한 후 바로 결과를 반환한다.

<인자>는 콤마(,)로 구분해 여러개로 사용이 가능

labmda <인자> : <인자 활용 수행 코드>

람다를 사용할 때 람다 전체를 소괄호로 감싸고 그 다음에 별도의 소괄호에 인자를 사용한다.

(labmda <인자> : <인자 활용 수행 코드>) (<인자>)

위와 같이 사용하는 것이 기본적인 방법이다.

보통은 편리성을 위해 아래와 같이 람다 함수를 다른 변수에 할당하고
변수를 함수명처럼 이용해 람다 함수를 호출한다.
람다 함수를 변수에 할당할 때는 소괄호로 감싸지 않아도 된다.

lambda_function = lambda <인자> : <인자 활용 수행 코드>
labmda_function(<인자>)

람다를 이용해 입력된 수의 제곱을 반환하자

(lambda x : x**2) (3)
#print((lambda x : x**2) (3))

출력 : 9

람다를 변수에 넣어 호출해보자.

test = lambda x : x**2
test(2)
#print(test(2))

#다른 인자의 제곱 값을 얻고 싶다면 인자만 바꿔서 호출해주면 된다.
# ex)    test(5)    
#	 출력 : 25

출력 : 4

3개의 인자를 입력해 람다를 호출하자

test2 = lambda x,y,z : 2*x + 3*y + z
test2(1,2,3)

출력 : 11

map()

map(함수, 리스트)

list(map(lambda x: x ** 2, range(5))) # x를 2 거듭제곱한다. 0~4까지

출력 : [0, 1, 4, 9, 16]

reduce()

reduce(함수, 시퀀스)

reduce = 시퀀스(문자열, 리스트, 튜플)을 누적집계

from functools import reduce
reduce(lambda x,y : x+y,[0,1,2,3,4])

출력 : 10

풀이
0+1=1
1+2 =3
3+3 =6
6+4 = 10

반대로 하게 되면 어떻게 될까?

from functools import reduce
reduce(lambda x,y : y-x,[0,1,2,3,4])

출력 : 2

filter()

filter(함수, 리스트)

 list(filter(lambda x: x < 5, range(10)))
# 0~9중에서 x가 5 미만인 것들

출력 : [0, 1, 2, 3, 4]

filter를 사용하여 홀수와 짝수를 출력 해보자

#홀수
list(filter(lambda x: x % 2, range(10))) 
#  x를 2로 나누었을때 0이면 False이므로 버리고
# 1이면 True이므로 list에 담는다.

#또 다른 방식의 홀수
# list(filter(lambda x: x %2!=0, range(10))) 

#짝수
list(filter(lambda x: x %2==0,range(10)))

출력 :
#홀수
[1, 3, 5, 7, 9]
#짝수
[0, 2, 4, 6, 8]

profile
개발 옹알이 부터

0개의 댓글