파이썬의 내장함수 map, filter 에 대해 알아봅시다.
각 요소에 함수가 적용된 결과를 반환합니다.
float_list = [1.2, 2.2, 3.3]
int_list = list(map(int, float_list))
print(f"int_list: {int_list}")
# int_list [1, 2, 3]
number_list = [1, 2, 3]
square_list = list(map(lambda x: x*x, number_list))
print(f"square_list: {square_list}")
# square_list: [1, 4, 9]
base_list = [1, 2, 3]
def plus_one(val):
return val + 1
plus_list = list(map(plus_one, base_list))
print(f"plus_list: {plus_list}")
각 요소에 함수가 적용되었을 때 true인 결과만 반환합니다.
num_list = [1, 2, 3]
over_two_list = list(filter(lambda x: x > 2, num_list))
print(f"over_two_list: {over_two_list}")
# over_two_list: [3]
사실, 파이썬의 list comprehension 문법을 사용하면 map, filter를 안쓰고도 작성이 가능합니다.
그리고, 개인적으로는 더욱 파이썬스러운(pythonic) 한 방법이라고 생각합니다.
왜냐하면, 더 적게 코드를 작성하고, 더 깔끔하고 그래서요.
[1.2, 2.2, 3.3] 각 요소가 정수로 변환된 [1, 2, 3]을 반환
float_list = [1.2, 2.2, 3.3]
# 1. 리스트 컴프리헨션 적용
int_list = [int(x) for x in float_list]
# 2. map 적용
int_list = list(map(int, float_list))
[1, 2, 3] 각 요소에 1을 더해서 [2, 3, 4] 를 반환
num_list = [1, 2, 3]
# 1. 리스트 컴프리센션 적용
over_two_list = [x for x in num_list if x > 2]
# 2. filter 적용
over_two_list = list(filter(lambda x: x > 2, num_list))