language/Python
[Python] lambda 함수(익명 함수)
스파이디웹
2022. 2. 28. 15:54
728x90
1. lambda 함수란?
파이썬에서는 lambda를 통해 이름이 없는 함수를 만들 수 있습니다.
lambda를 통해 만들어진 함수는 기존의 def 키워드를 통하여 리터럴 표기법에 따른 함수를 생성하는 방법과 비교했을 때 코드의 간결함과 메모리의 절약이 장점이라고 할 수 있습니다.
함수객체를 변수에 담은 시점에서, 함수객체는 메모리에 올라가서 변수를 통해 자신이 호출되기를 기다리게 됩니다.
단 한번만 사용되는 함수의 경우 불필요한 메모리가 낭비되게 됩니다.
lambda 함수는 결과를 return키워드 없이 자동으로 return해줍니다.
lambda x : x + 1
lambda는 이름이 없고 저장된 변수가 없기에 재사용할 수는 없는데, 변수에 담아 재사용 할 수는 있습니다.
func = lambda x: x + 1
func(4)
#5출력
2. 람다 함수 예제
1)
#def로 공백을 제거한 문자열의 길이를 구하는 함수 생성 후 함수에 따라 target을 정렬
target = [' cat ', ' tiger ', ' dog', 'snake ']
def my_key(string):
return len(string.strip())
print(sorted(target, key=my_key))
#labmda로 표현
print(sorted(target, key=lambda x : len(x.strip())))
2)
#map 함수
my_list = [1,2,3,4]
a = list(map(lambda x : x + 1, my_list))
print(a)
#[2,3,4,5]출력
a = map(lambda x : x + 1, my_list))
print(list(a))
#[2,3,4,5]출력
#map 함수 예제 2
my_list2 = ["a", "b", "c", "d"]
b = map(lambda y: y.upper(), my_list2)
print(list(b))
#["A", "B", "C", "D"] 출력
#filter 함수 예제
result = list(filter((lambda x: x % 2 == 1), range(20)))
print(result)
#[1,3,5,7,9,11,13,15,17,19] 출력
3) spark 에서도 lambda는 사용된다.
rdd1 = rdd_list.map(lambda x:x*x)
rdd2 = rdd_range.reduce(lambda x,y: x+y)
rdd3 = rdd_str.filter(lambda line: "Spark" in line)
참조:
728x90