1. lambda
lambda( )는 익명함수라고 하며, 이름이 없는 함수입니다. 간단한 예제로 설명드려 볼게요.
print()
는 이름이 있는 함수입니다. print
를 hojun
으로 받고 print함수를 호출할 수 있습니다. 즉, 이름이 있다는 뜻은 함수를 가르키고 있는 '변수명' 이라고 생각하면 돼요.한가지 예제를 더 살펴보도록 할게요.
입력
출력
우선 add, sub, div, mul이라는 사칙연산을 수행하는 함수를 선언해주었습니다. 그 다음 각 함수들의 이름을 calculator라는 배열에 넣어주었고, print로 0번째 배열을 호출하였더니 함수 add의 결과값인 30이 나오게 되었습니다.
우리가 일반적으로 사용할 수 있는 변수의 위치에 ( )(괄호)만 사용하지 않는다면 변수처럼 사용할 수 있으며, 호출할 때는 '( )'(괄호)를 사용해줍니다.
그럼 lambda함수는 왜 익명함수 일까요? 이름이 있는 함수들과는 다르게 매우 간결하게 작성할 수 있기 때문입니다.
이렇게 단 한줄로 함수의 기능을 구현할 수 있어요! 또한 lambda함수는 return이라는 키워드를 입력하지 않아도 결과 부분을 통해 자동으로 return해줍니다.
예제를 볼게요.
입력
출력
lambda( )함수를 이용하여 x라는 매개변수가 들어오면
x ** 2
를 한 뒤 return하라는 뜻입니다.입력
출력
위 예제처럼 인수도 바로 대입할 수 있습니다.
즉 lambda는 익명 함수라는 이름처럼 함수의 이름을 정하지 않고 lambda라는 키워드를 이용해 함수처럼 이용할 수 있다는 뜻입니다!
2. map( )
lambda 함수와 가장 많이 조합되어 이용하는 함수입니다. 간단히 설명드리도록 할게요.
방금 위에서 만들었던 매개변수를 제곱하여 return하는 함수를 만들어 볼겁니다. 그런데 아까 위에서 작성했던 예제는 하나의 값만 받고 하나의 값만 리턴할 수 있었죠?
여러값이 들어오게 된다면 어떻게 해야할까요?
입력
출력
첫번째 방법처럼 이름이 있는 '제곱'함수를 새로 정의하여 만드는 방법도 있고, lambda함수를 정의하여 만드는 방법이 있습니다.
두 방법 다 map()함수를 이용하였는데요, map은 리스트의 요소들을 지정된 함수로 처리해주는 함수입니다.
즉, 우리는 [1,2,3,4]라는 리스트 요소들을 '제곱' 혹은 'lambda x:x**2'라는 함수로 처리하도록 하였습니다.
map의 사용방법은 다음과 같습니다.
3. filter( )
이번에는 lambda와 filter를 사용해보도록 할게요.
입력
출력
filter 함수를 이용하여 50보다 큰 x값을 출력하도록 하였습니다.
4. 실전 문제
아래 문제를 풀어보세요!
'숫자' 배열을 '승수' 배열과 짝지어서 승수만큼 제곱을 시켜줄 것 입니다.
답은 하단에 있으니 꼭 문제를 풀어보시고 확인해주세요:)
입력
출력
정답
입력