파이썬 map, lambda, apply, filter 함수
03. Python map, lambda, apply, filter 사용
이번 포스트에서는 Python에서 자주 사용하고 유용한 함수인 map(), lambda(), apply() 사용을 다루겠습니다.
map
- 특징
- 지연평가(lazy Evaluation) 방식
- 필요한 시점까지 연산을 늦추는 방식, 불필요한 연산을 최소화하여 성능을 향상시키는 방법
- 각 요소에 대해 함수를 적용하여 새로운 iterable 객체를 생성하지만 이 과정에서 실제로 변환된 결과값들이 생성되는 것이 아니라, 필요할 때까지 기다리는 것임
- 변환된 결과값들이 모두 메모리에 저장되지 않고 부부만 계산하여 처리할 수 있기에 불필요한 메모리 사용 줄임
- 간결성, 가독성
- 코드의 간결성, 가독성 상승
- 성능
- C로 구현되어 있어 일반적인 for문 보다 더 빠른 실행 속도를 제공함
- 메모리 사용량
- 새로운 리스트 생성하지 않고, iterator 객체를 반환하므로, 메모리 사용량을 최소화할 수 있음
- 매우 큰 iterator의 처리의 경우, 메모리 사용량이 매우 높아질 수 있음
- 제약사항
- 입력된 파라미터의 모든 iterator 객체의 길이가 같아야 함
✅ 기본 문법
map(function, iteration)
function : 각 요소에 적용할 함수 이름
iteration : 함수를 적용할 데이터 집합
type : map타입
✅ 활용 문법
map(function, iteration1, iteration2 …)
function : 각 요소에 적용할 함수 이름
iteration1, iteration2 … : 함수를 적용할 데이터 집합
#1. sequence형 제곱을 list로 반환
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers)) #[1,4,9,16,25]
#sequence형끼리 더한 값을 list로 반환
def add(x,y):
return x + y
number1 = [1, 2, 3, 4, 5]
number2 = [10, 20, 30, 40, 50]
added_numbers = map(add, numbers1, numbers2)
print(list(added_numbers)) #[11, 22, 33, 44, 55]
#정수 타입으로 변환
list(map(int, [1.1, 2.2, 3.3])) #[1, 2, 3]
lambda
람다함수는 익명함수(Anonymous function)라고 불림 간단한 한 줄 짜리 함수를 정의할 때 사용 주로 filter(), map(), sorted() 등의 함수와 함께 사용, 인자로 전달됨
*특징
- 메모리 절약
- 코드의 간결함
- 함수의 이름이 없음
- 표현식 하나만 사용 가능

✅ 기본 문법
lambda arguments : expression
arguments : 매개변수, 인자
expression : 표현식
✅ 활용 문법
- map()과 활용
list(map(lambda x: x**2, range(5)))
#[0, 1, 4, 9, 16]
- reduce()와 활용
from functools import reduce
reduce(lambda x:y x+y, )