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)

 

 

 

참조:

https://wikidocs.net/22804

https://parkaparka.tistory.com/15

728x90