Stack Building
lambda, map, filter, reduce 본문
1. lambda
ㅡ 메모리를 절약하고 가독성을 좋게 한다.
ㅡ 일반적으로 함수는 객체를 만들고 재사용을 위해 함수의 이름을 메모리에 할당하는데, 익명함수 람다는 이름을 가지지 않는다. 즉, 한 번 사용되고 나면 힙 메모리 영역에서 사라진다.
* iterable
ㅡ 반복 가능한 자료형
ㅡ 리스트, 문자열, 튜플 등이 해당
2. map
ㅡ map(함수, iterable)
ㅡ 특정 함수에 대한 수행 결과를 리턴
ㅡ 입력받은 자료형의 각 요소가 함수에 의해 수행된 결과를 묶어서 map iterator 객체로 리턴
ㅡ 메모리를 절약
ㅡ map의 결과를 list로 보고 싶으면 list()로 감싸줘야 한다. 그렇지 않으면 메모리 주소만 나옴
* iterator
ㅡ next() 메소드를 가지는 파이썬 객체
ㅡ 메모리에 올릴 데이터만 올려서 효율적으로 메모리를 사용함
ㅡ map iterator는 list() 또는 set() 등으로 다른 자료구조로 변환 가능
3. filter
ㅡ filter(함수, iterable)
ㅡ 특정 함수의 조건에 부합하는 값만 리턴
ㅡ 입력받은 자료형의 각 요소가 함수에 하나씩 입력되어 리턴값이 참인 것만 묶어서 리턴
ㅡ 인자로 들어갈 함수는 참이나 거짓을 리턴하는 것이어야 함
4. reduce
ㅡ reduce(함수, iterable, [initializer])
ㅡ 어떤 리스트에 대한 연산을 수행할 때, 결과를 축약하기 위해 사용된다. reduce 함수에 두 요소를 연산하는 로직 함수를 인풋으로 넣어야 한다.
ㅡ 사용예) 1~100까지의 합: print(reduce((lambda x,y : x+y), [x for x in range(1,101)]))
5. 출처
'Python' 카테고리의 다른 글
pandas 라이브러리 (0) | 2019.07.16 |
---|---|
numpy 라이브러리 (0) | 2019.07.15 |
collections 모듈 (0) | 2019.07.13 |
heapq 모듈 (0) | 2019.07.10 |
Enumerate과 Zip (0) | 2019.07.09 |