[python] map, filter

skyepodium·2021년 5월 15일
1
post-thumbnail

파이썬의 내장함수 map, filter 에 대해 알아봅시다.

1. map

1) 정의

각 요소에 함수가 적용된 결과를 반환합니다.

2) 사용법

3) 예시

  • 파이썬 내장 함수 int 적용
    [1.2, 2.2, 3.3] 각 요소가 정수로 변환된 [1, 2, 3]을 반환
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]
  • lambda 함수 적용
    [1, 2, 3] 의 각 요소를 제곱한 [1, 4, 9] 반환
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]
  • 사용자 정의 함수 적용
    [1, 2, 3] 각 요소에 1을 더해서 [2, 3, 4] 를 반환
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}")

2. filter

1) 정의

각 요소에 함수가 적용되었을 때 true인 결과만 반환합니다.

2) 사용법

3) 예시

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]

3. list comprehension

사실, 파이썬의 list comprehension 문법을 사용하면 map, filter를 안쓰고도 작성이 가능합니다.

그리고, 개인적으로는 더욱 파이썬스러운(pythonic) 한 방법이라고 생각합니다.

왜냐하면, 더 적게 코드를 작성하고, 더 깔끔하고 그래서요.

1) map

[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))

2) filter

[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))
profile
callmeskye

0개의 댓글