[Python] lambda를 이용하여 정의(define) 하는 방법 / 한 줄로 해결 가능

0

보통의 방법

파이썬으로 프로그래밍 할 때 자주 사용하는 함수는 def(define)을 사용하여 반복없이 사용 가능한 기능이 있다.

예를 들어 덧셈을 할 경우,

>> x = 1 + 2 + 3
>> print(x)
6

는 가장 쉬운 방법이지만, 사용할 때마다 작성하기 번거롭다(hassle). 그래서 자주 사용하는 함수의 경우 def를 이용하면 능률을 올릴 수 있다.

>> def add_1(a, b, c):
>>     return a + b + c
>> add_1(1, 2, 3)
6

여러 개의 숫자를 넣기 위해서는 *args를 이용하면 된다.

>> def add_2(*args):
>>     temp = 0
>>     for i in args:
>>         temp += i
>>     return temp
>> print(add_2(1,2,3,4))
10

Lambda 방법

위 def 방법보다 Lambda는 간단하다. 한 줄에 def의 변수 및 return이 표현 가능하다.

>> add3_ = lambda a,b,c : a+b+c
>> add3_(1,2,3)
6

a,b,c 는 변수 이며 “:” 뒤에는 return 값을 적으면 된다. Lambda의 경우 해당 문장에서 한 번만 사용하는 함수에 유용하다.


Lambda 활용법

filter

python 내장 함수로 특정 조건으로 값을 필터링할 때 사용한다.

>> numb = [1,2,3,5,7,8,10,16,22,30,39]
>> list(filter(lambda x : x % 2 == 0, numb ))
[2, 8, 10, 16, 22, 30]

예시, 짝수만 필터링하고 싶을 때 이용

map

mapping의 약자로 특정 조건을 추가할 때 이용. (내장 함수)

>> numb = [1,2,3,5,7,8,10,16,22,30,39]
>> list(map(lambda x : x * 3, numb))
[3, 6, 9, 15, 21, 24, 30, 48, 66, 90, 117]

예시, 리스트 값에 각각 3배를 한 경우

reduce

특정 조건으로 값을 소거하는 경우, 내장 함수가 아니기 때문에 reduce를 이용하려면 functools를 호출 해야함.

>> import functools
>> numb = [1,2,3,5,7]
>> functools.reduce(lambda x,y : x+y, numb)
18

위 예시는 리스트 값의 덧셈이다.

작동 원리

[Python] lambda를 이용하여 정의(define) 하는 방법 / 한 줄로 해결 가능

회신을 남겨주세요

귀하의 의견을 입력하십시오!
여기에 이름을 입력하십시오.