파이썬에는 함수를 한 줄로 표현해주는 기능이 있습니다.
람다(lambda)함수라고 불리우는 람다 표현식이 바로 그것입니다. 형식은 다음과 같습니다.
lambda 매개변수 : 표현식
1. 람다함수
1-1. 두 수를 곱해주는 함수)
def multiple(x, y):
return x * y
print(multiple(4, 5))
결과)
20
결과로 20이 나왔습니다.
다음은 똑같은 연산을 람다함수를 사용해 보겠습니다.
'lambda 매개변수 : 식'의 구성으로 이루어진다고 말씀드렸습니다.
하지만 이 상태로는 함수를 호출할 수 없습니다. 람다 표현식은 이름이 없는 함수를 생성하기 때문에 익명함수(anonymous function)라고도 부릅니다.
익명함수를 호출하기 위해서는 함수를 담아줄 그릇이 필요한데 그것을 위해 변수를 생성하고 할당하는 작업이 필요합니다.
1-2. 익명의 함수를 변수라는 그릇에 담은 모습)
func = lambda x, y : x * y
1-3. 람다 함수를 이용해서 곱셈을 출력)
func = lambda x, y : x * y
print(func(4, 5))
결과)
20
1-4. 람다 표현식 자체를 출력하기)
람다 표현식을 변수에 할당하지 않고 표현식 자체를 바로 호출할 수 있습니다. 다음과 같은 형식을 따르면 됩니다.
(lambda 매개변수 : 식)(인수)
*lambda표현식을 괄호()로 묶어주고 인수를 넣어주는 부분도 괄호로 묶어서 표현합니다.
예시)
print((lambda x, y : x * y)(4, 5))
결과)
20
1-5. 람다 표현식 안에서는 변수를 생성할 수 없다)
print((lambda x : y = 10; x + y)(1))
결과)
SyntaxError: invalid syntax
람다 함수 안에서 x를 정의하고 x의 매개변수로 1을 넣는 방법은 사용할 수 없습니다.
2. map 함수
lambda함수와 함께 사용하는 대표적인 함수는 map함수가 있습니다. map함수의 기본 형식은 다음과 같습니다.
map(함수, 리스트)
map함수는 함수와 리스트를 인자로 받습니다. 자주 쓰이는 예제를 들어보겠습니다.
a, b = map(int, input().split()) #1
print(list(map(lambda x: x**2, range(1, 5+1)))) #2
결과)
[1, 4, 9, 16, 25] #2
#1 : 파이썬의 입력을 받는 input()함수는 문자열로 입력을 받는데 그것을 int형으로 변환해주는 코드입니다.
#2 : 범위 1~5까지의 정수를 제곱해주고 list로 묶어주는 코드입니다.
'[Python]' 카테고리의 다른 글
[Python] 파이썬 예외처리(try~except) (0) | 2022.09.17 |
---|---|
[Python] 파이썬 깊은복사(DeepCopy) (0) | 2022.09.15 |
[Python] 파이썬 진수 변환 hex(), oct(), bin(), int() (0) | 2022.08.07 |
[Python] 파이썬 remove(), pop(), del 차이점 (0) | 2022.07.27 |
[Python] 파이썬 heap 자료구조, heapq 모듈 사용 (0) | 2022.07.25 |