lambda
- lambda는 익명함수라고 하며, 이름이 없는 함수
- 함수의 이름을 정하지 않고 lambda라는 키워드를 이용해 함수처럼 이용
- 없으나 부여할 수 있긴 함
- 이름을 설정하는 것은 함수를 가리키고 있는 변수명을 주는 것이라고 생각하기!
- return이라는 키워드를 입력하지 않아도 결과 부분을 통해 자동으로 return해줌
사용방법
- 일반적으로 사용할 수 있는 변수의 위치에 괄호를 사용하지 않으면 변수처럼 사용 가능. 호출할 때는 괄호를 사용하기!
lambda_function = lambda x:x**2
#여기서 lambda 함수의 이름은 lambda_function이 된다
print(type(lambda_function)) # class 'function'
lambda 매개변수 : 결과
- return 이라는 키워드를 입력하지 않아도 결과 부분을 통해 자동으로 return해줌
제곱 = lambda x : x ** 2
# (lambda x : x ** 2)(3) 이것과 같은 뜻임!
제곱(3)
- 인수도 바로 대입이 가능
- 함수의 이름을 정하지 않고 lambda라는 키워드를 이용해 함수처럼 이용할 수 있다는 뜻
def f():
return lambda x:lambda i:i**2
f()(1)(10)
map()
- lambda 함수와 가장 많이 조합되어 이용되는 함수!
- 하나의 값만 받고 하나의 값만 리턴하는 게 아니라, 여러개의 값 처리 가
- 리스트의 요소들을 지정된 함수로 처리해주는 함수
map(함수, 리스트 혹은 튜플)
# 첫 번째 방법
def 제곱(x):
return x ** 2
list(map(제곱, [1, 2, 3, 4]))
#두 번째 방법
list(map(lambda x : x ** 2, [1, 2, 3, 4]))
- 첫 번째처럼 ‘제곱’함수를 새로 정의하여 만드는 방법도 있지만, lambda함수를 정의하여 쉽게 사용 가능하다
- map은 리스트의 요소들을 지정된 함수로 처리해주는 함수
- [1,2,3,4] 라는 리스트 요소들을 ‘제곱’함수 똑은 'lambda x:x**2'라는 함수로 처리하도록 함
filter()
list(filter(lambda x : x > 50, range(100)))
# 50보다 큰 x값을 출력하도록 함
숫자_승수 = list(zip(숫자, 승수))
제곱 = list(map(lambda x: x[0] ** x[1], 숫자_승수))
백이상 = list(filter(lambda x: x>=100, 제곱))
제곱합 = sum(제곱)
print(f'{숫자_승수}\\n{제곱}\\n{백이상}\\n{제곱합}')