Python
Map, Lambda, Filter in Python
hyungminjeon
2024. 6. 6. 21:51
[리스트 예시]
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
[Map 함수]
Map 함수는 주어진 함수와 반복 가능한 객체(ex.리스트)를 인수로 받아, 반복 가능한 객체의 각 요소에 대해 함수를 적용한 결과를 반환한다.
def check_adult(person):
return ('성인' if person['age'] > 20 else '청소년')
result = map(check_adult, people)
print(list(result))
위 코드에서 map 함수는 check_adult 함수를 people 리스트의 각 요소에 적용한다. 결과적으로 각 사람의 나이가 20살 초과인 경우 '성인', 그렇지 않은 경우 '청소년'으로 표시된다
출력 결과:
['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
[Lambda 함수]
lambda 함수는 익명 함수(anonymous function)로, 이름 없이 간단한 연산을 수행하는 함수이다. 주로 map이나 filter와 같이 간단한 함수를 인수로 요구하는 함수와 함께 사용된다.
예시1
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))
위 코드에서 lambda 함수는 check_adult 함수를 대체하여 같은 기능을 수행한다. 결과적으로 각 사람의 나이가 20살 초과인 경우 '성인', 그렇지 않은 경우 '청소년'으로 표시된다.
예시 1 출력 결과:
['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
예시2
mx = lambda x,y: x if x>y else y
print(mx(5,3))
예시 2 출력 결과:
5
[Filter 함수]
filter 함수는 주어진 함수와 반복 가능한 객체를 인수로 받아, 함수의 조건을 만족하는 요소들만 걸러내어 반환한다.
result = filter(lambda x: x['age'] > 20, people)
print(list(result))
위 코드에서 filter 함수는 lambda 함수를 사용하여 people 리스트의 각 요소 중 나이가 20살 초과인 요소들만 걸러낸다.
출력 결과:
[
{'name': 'carry', 'age': 38},
{'name': 'ben', 'age': 27},
{'name': 'bobby', 'age': 57},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]