TIL-016 | Python_lambda expression

Lee, Chankyu·2021년 9월 24일
0
post-thumbnail

lambda 표현식?

  • 람다 표현식은 식 형태로 되어 있어 람다 표현식이라고 하며, 런타임에 생성해서 사용할 수 있는 익명함수 이다. 쓰고 버리는 일시적인 함수 이고, 일반적인 함수와 같이 정의해두고 쓰는 것이 아니고 필요한 곳에서 즉시 사용 후 버릴 수 있다.
# 기본 구조
lambda 인자 : 표현식

# 기본 구조 예시
(lambda a,b : a + b)(1,2) # 3

mylambda = lambda a : a**2
print(mylambda(2)) # 4

mylambda2 = lambda a,b: a*b
print(mylambda2(2,3)) # 6
  • 위와 같이 람다 표현식의 정의에는 return문이 포함되어 있지 않으며, 함수가 사용될 수 있는 곳에는 어디라도 람다 표현식을 사용할 수 있다.

labmda 표현식의 사용법

1. 람다 표현식을 반환하는 함수식에서의 사용

def func(x):
    return lambda y : x + y

a = func(1)
print(a(2)) # 3

b = func(3)
print(b(4)) # 7

print(func(1)(2)) # 3
  • func() 함수는 x + y 의 람다함수를 반환하는 함수식이다. 람다 함수를 따로 변수에 지정안하고 즉각적으로 사용이 가능하다.

2. 람다 표현식 안에서의 조건문 사용

print((lambda a : "even" if a%2 == 0 else "odd")(5)) # "odd"

mylambda = lambda a : "even" if a%2 == 0 else "odd"
print(mylambda(4)) # "even"

3. 매개변수가 없는 람다 표현식

  • lambda 뒤에 매개변수가 없는 표현식도 가능하며 콜론(:) 뒤에 반드시 반환되어야 할 값이 나와야 한다.
(lambda : 1)() # 1

x = 1
print((lambda : x)()) # 1

내장함수 with lambda 표현식

1. map() 함수

  • 지난 map 함수에 대한 글에서도 언급하였듯이 map 함수와 lambda 표현식의 조합이 자주 사용되고, 함께 사용될때 장점이 좀 더 극대화 되는 것을 볼 수 있다.
myList1 = [1, 2 ,3, 4, 5]
myList2 = [6, 7, 8, 9, 10]

# 함수 정의 및 map 함수 사용하는 경우
def func(a, b):
	return a+b 
list(map(func, myList1, myList2)) # [7, 9, 11, 13, 15]

# 함수 정의 없이 lambda 표현식 & map 함수 사용
list(map(lambda a,b : a+b, myList1, myList2)) # [7, 9, 11, 13, 15]

2. filter() 함수

  • filter() 함수도 map()함수와 동일하게 두 개의 인자를 받는다.
filter(function, iterable)
  • filter 내부의 함수가 동작하면, 각각의 요소에 대해 boolean 값을 반환하면 그 값이 false 인 경우 값이 제거 된다.
# 예시
myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list(filter(lambda x: x%2 == 0, myList)) # [2, 4, 6, 8, 10]

# filter() 가 아닌 map() 함수를 사용한다면? 
(list(map(lambda x: x%2 == 0, myList)))
#[False, True, False, True, False, True, False, True, False, True]
# boolean 값 반환한다. 
profile
Backend Developer - "Growth itself contains the germ of happiness"

0개의 댓글