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}
]