python 람다(Lambda)

Posted by jungbbong
2015. 6. 20. 21:57 프로그래밍/Python





python에서는 람다(Lambda)라는게 있다


이는 간단하게 만들어 바로 사용하도록 하는것이다


아래는 일반함수이다


1
2
3
4
def 일반함수(a = 1,b=2):
    return a*b
 
일반함수(10,2)


아래는 람다를 사용한 함수이다


1
2
3
람다 = lambda a,b : a*b
 
람다(10,2)



위의 기능은 둘다 동일한 결과를 리턴하겠지만 Lambda를 사용하게 되면 간단하게 한줄로 표현할 수 있다


lambda를 사용하는 방법은 아래와 같다


lambda 인자 : 표현식


1
2
3
4
5
6
sum= lambda a,b : a*b
 
sum(10,2)
 
def sum2(a = 1,b=2):
    return a*b


다시 위의 코드에서 살펴 보면 람다함수를 사용한 sum,sum2의 객체는 어떻게 나올까?

1
2
3
4
5
6
7
8
9
10
11
12
13
Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> sum= lambda a,b : a*b
>>> sum(10,20)
200
>>>
>>> def sum2(a=1,b=2):
...     return a+b
...
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, 'sum': <function <lambda> at 0x76c403b0>, 'sum2': <function sum2 at 0x76c403f0>, '__package__': None, '__name__': '__main__', '__doc__': None}
>>>

위와 같이 sum과 sum2는 같은 function 객체를 취하는것을 알 수 있다 (같은 기능이라고 봐도 무관)


1
2
3
4
>>> result = filter(lambda x: x % 2 == 0, range(5))
>>> print result
[0, 2, 4]
>>>


위와같이 filter를 겹쳐서 사용할도 있다

위의코드는 0부터4까지의 x중 2로 나눈 나머지가 0인 것들만 찾아내는 함수이다


*보통 range함수나 list와 같이 이터레이블한 상태를 사용하여 간단한 데이터연산에 사용을 한다