brunch

You can make anything
by writing

C.S.Lewis

by 유윤식 Jul 23. 2019

Python: Lambda; 람다

기억의. 한계를. 뛰어넘어. 람다와 친구들.

매일 Python 을 사용하지만

매일 외워지지 않는 문법들이 있다.


사실 기초적인 문법을 이용해서 코드를 만들어가는데에

큰 어려움이 있지는 않다.


하지만, 그건 나만의 생각일 수 있다.

가독성과 효율성 측면에서는 분명히 좋은 문법을 사용하는게 필수!


Lambda의 친구들

Map, Filter, List, Reduce 등


1. Lambda

람다. 람다. 어디서 많이 들어 봤음직 한데.

람다는 그냥 함수다. 근데 이름이 없다. 자바에서는 '익명함수' 라는 이름이 있었다.


사용법은 사실 간단하다.



기대했던 수준의 코드가 아닌가?


내가 가장 자주 사용하는 람다는 sort 함수에서 key 를 전달 할 때이다.

하나 더!

여기까진 쉽다. 근데 앞으로도 쉽다는게...


이제 부터는 좀 더 기대 할 수 있는 Chain Function을 만들어 볼 것이다.


람다의 친구들을 소환한다.


먼저,

Map 이라는 녀석이 있다.

파라미터로 '함수' 하나와 여러개의 'iterable' 인자를 취한다.


간단한 예로는,

함수의 설명이 위에 있듯이,

위의 리스트를 순회하면서 각각의 값에 int() 를 적용시키고 list()로 감싼 케이스다.


이것도 좀 간단하다.


여기에 lambda를 사용 할 수 있을까?

위에서 말한 int() 함수를 lambda 안에 넣으면 끝.


두번째 친구, Filter.

파라미터로 함수와 순회가능한 값을  전달하면 된다.

제너레이터 개념이 포함된다.


간단하게 배열에서 특정 값보다 큰 값을 찾는 예를 보면,

사실 개인적으로 filter 함수는 외울 수 있다. 자주 사용하기 때문에.


세번째 친구, Reduce.

이건 built_in 이 아니다. 그래서 임/포/트 해준다.



뭔가 재귀함수 느낌으로 연산이 진행된다는 느낌이 온다.



이것도 생각보다 간단한가?


그렇게 느끼라고 만들어진 함수이니까. 잘 기억하고 활용하자.


끝.


** Lambda 함수는 사용 후 바로 메모리에서 제거된다.

작가의 이전글 Python: itertools; 순열과 조합
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari