lambda 표현식은 식 형태로 되어있다고 하여 람다 표현식이라고 부르기도 한다. 람다 표현식은 함수를 간편하게 작성할 수 있어 다른 함수의 인수로 넣을 때 주로 이용하곤 한다.
lambda 매개변수들: 식
처럼 사용하고 lambda로 만든 익명함수를 호출하기 위해서는 람다 표현식을 변수에 할당해주면 된다.
람다 표현식을 변수에 할당해주지 않고
lambda x: x+1
이런 식으로만 사용하게 되면 함수를 호출 할 수 없게 된다. 람다 표현식은 이름이 없는 익명함수를 만들기 때문이다.
ex)
a=lambda x:x+10
a(1) =>11
람다 표현식을 변수에 할당하지 않고 표현식 자체를 바로 호출하려면 람다표현식을 괄호로 묶고 다시 인수를 넣은 괄호를 붙여주면 된다
(lambda 매개변수들: 식)(인수들)
ex)
(lambda x:x+10)(1) => 11
람다표현식에서 주의할 점
람다 표현식안에서는 새 변수를 만들 수 없다. 따라서 반환 값 부분은 변수없이 식 한 줄로 표현할 수 있어야 한다.
ex)
(lambda x:y=10;x+y)(1) => error
람다표현식에서 조건부 표현식을 사용하려면 lambda 매개변수들 : 식1 if 조건식 else 식2 처럼 사용하면 된다.
ex)
a = [1, 2, 3, 4]
list(map(lambda x: str(x) if x % 2 == 0 else x, a))
[1, '2', 3, '4']
람다표현식에서 if를 사용했다면 반드시 else도 사용해주어야 하며 elif를 사용할 수 없다. elif를 사용하고자 하면 그냥 def로 함수를 만드는 것이 낫다.
람다표현식에서 map을 이용해 리스트 등의 반복 가능한 객체를 여러개 넣을 수도 있다.
ex)
a = [1, 2, 3]
b = [2, 4, 6]
list(map(lambda x, y: x * y, a, b)) => [2, 8, 18]
람다표현식에서 filter를 사용하여 반복 가능한 객체에서 특정 조건에 맞는 요소만 가져올 수 있다.
filter에 지정한 함수의 반환값이 True일 때만 해당 요소를 가져온다.
filter(함수, 반복가능한객체)의 방식으로 사용한다.
ex)
a = [1,2,3,4,5,6,7]
list(filter(lambda x: x > 2 and x < 5, a)) => [3,4]
람다표현식에서 reduce를 사용하여 반복가능한 객체의 각요소를 지정된 함수로 처리한 뒤 이전 결과와 누적해서 반환할 수 있다.
reduce(함수, 반복가능한 객체) 의 방식으로 사용한다.
from functools import reduce
a = [1, 2, 3]
reduce(lambda x, y: x + y, a) => 6
'파이썬 > 파이썬의 기본' 카테고리의 다른 글
[파이썬] 파이썬 언더바 개념 (0) | 2023.01.04 |
---|---|
[파이썬] 문자열 포매팅 방법 (0) | 2023.01.04 |
[파이썬] dictionary의 활용 (0) | 2022.12.27 |
[파이썬] 문자열에서 특정문자를 바꾸는 방법 (0) | 2022.12.08 |
[파이썬] list, tuple, dict, set의 차이점 (0) | 2022.12.06 |
댓글