Lambda, Map, Filter

EBAB!·2024년 1월 17일
0

파이썬은 데이터 분석과 파일을 읽는 등의 Sequence데이터를 자주 다루게 된다.
이러한 데이터들을 핸들링하기 좋은 함수들에 대해 잘 알아두면 좋다는 것을 느낀다.

lambda

lambda는 일회성 함수로 여겨지고 재사용할 함수가 아니라면 선언하는 편이다.
힙 영역에서 사용 즉시 소멸되어 메모리를 절약할 수 있다.
pythonic한 코드를 작성하는데도 도움을 주고 파이썬의 가비지 컬렉션에서 Count가 0으로 취급되어 이런 부분도 좋다.

다음과 같이 선언하는 방법도 있다.

f = lambda a, b, c: a + b * c

print(f(1,2,3))  # 7

Map

iterable 객체에서 각 원소에게 동일한 함수를 적용시킬 때 사용한다.
map(원소마다 적용할 함수, iterable 데이터)이고 map object를 반환한다.
그리고 Lazy Evaluation을 사용하여 메모리 최적화와 성능 향상에 도움을 준다.

Lazy Evaluation(지연 계산)

계산 결과가 실제로 필요한 순간 전까지는 생성되지 않는 방식이다.
만약 즉시 계산된다면 해당 결과 데이터가 모두 메모리에 저장되므로 큰 데이터 집합을 다룰 때 메모리 문제가 발생할 수 있다.

arr = [i for i in range(1,11)]

result = map(lambda x: x**2, arr)  # result는 map 오브젝트
result2 = list(result)  # 리스트 형태
print(result2)  # [100, 400, 900, ..., 10000]

Filter

map()과 마찬가지로 적용할 함수, iterable 데이터를 입력받고, 이 때 적용할 함수는 bool값을 반환하도록 한다.
True인 원소만을 반환하는 filter 객체를 반환한다.

arr = [i for i in range(1,11)]

result = map(lambda x: x%2==0, arr)  # result는 map 오브젝트
result2 = list(result)  # 리스트 형태
print(result2)  # [2, 4, 6, 8, 10]
profile
공부!

0개의 댓글