언어/python

python) filter, map함수

STUFIT 2024. 10. 30. 20:40
반응형

1. 파이썬 `filter()` 함수란?

`filter()` 함수는 특정 조건에 맞는 요소만 선택해서 걸러주는 역할을 합니다. 예를 들어, 리스트에서 짝수만 골라내고 싶다면 `filter()`를 사용할 수 있다.

<`filter()` 기본 구조>
filter(조건 함수, 데이터)
- `조건 함수`: 각 요소가 조건을 충족하는지 검사하는 함수입니다. 반환값은 `True` 또는 `False`여야 합니다.
- `데이터`: 필터링할 대상 데이터입니다. 보통 리스트, 튜플, 세트 등이 여기에 들어갑니다.

#### 예제: 짝수만 필터링하기

아래는 `filter()`를 사용해 리스트에서 짝수만 골라내는 예제입니다.

# 데이터 리스트
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 짝수 조건 함수
def is_even(n):
    return n % 2 == 0

# filter 사용
even_numbers = list(filter(is_even, numbers))
print(even_numbers)  # 출력: [2, 4, 6, 8, 10]



위 코드에서 `is_even` 함수는 숫자가 짝수인지 확인하고, 짝수일 때만 `True`를 반환합니다. 이 `True`인 값들만 남아 최종적으로 짝수만 담긴 리스트가 됩니다.

<한 줄로 작성하는 람다(lambda) 함수 활용>

간단한 조건일 때는 `lambda` 함수를 사용해 조건 함수를 한 줄로 쓸 수 있습니다.

even_numbers = list(filter(lambda n: n % 2 == 0, numbers))
print(even_numbers)  # 출력: [2, 4, 6, 8, 10]


여기서 `lambda n: n % 2 == 0`은 `is_even` 함수를 대체한 것입니다.


2. 파이썬 `map()` 함수란?

`map()` 함수는 데이터를 변형할 때 사용합니다. 예를 들어, 모든 숫자를 제곱하거나, 문자열을 대문자로 변환하고 싶을 때 사용할 수 있습니다.

<`map()` 기본 구조>
map(변환 함수, 데이터)
- `변환 함수`: 각 요소를 변환할 함수를 지정합니다.
- `데이터`: 변환할 대상 데이터로 리스트, 튜플, 세트 등이 들어갑니다.

예제: 모든 숫자를 제곱하기
아래는 `map()`을 사용해 리스트의 각 숫자를 제곱하는 예제입니다.

# 데이터 리스트
numbers = [1, 2, 3, 4, 5]

# 제곱 함수
def square(n):
    return n * n

# map 사용
squared_numbers = list(map(square, numbers))
print(squared_numbers)  # 출력: [1, 4, 9, 16, 25]


위 코드에서 `square` 함수는 숫자를 제곱하여 반환하며, 이 값들이 `map()`을 통해 모든 요소에 적용됩니다.

<한 줄로 작성하는 람다(lambda) 함수 활용>

`lambda`를 이용해 `map()` 함수도 간단하게 작성할 수 있습니다.

squared_numbers = list(map(lambda n: n * n, numbers))
print(squared_numbers)  # 출력: [1, 4, 9, 16, 25]


여기서 `lambda n: n * n`은 `square` 함수를 대체해 간결하게 작성한 것입니다.

3. `filter()`와 `map()` 함께 사용하기

이제 `filter()`와 `map()`을 함께 사용하는 예제를 볼게요. 예를 들어, 리스트에서 짝수만 골라내고, 그 짝수의 제곱을 구해봅시다.

# 데이터 리스트
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

# 짝수만 골라내고 제곱 구하기
even_squared_numbers = list(map(lambda n: n * n, filter(lambda n: n % 2 == 0, numbers)))
print(even_squared_numbers)  # 출력: [4, 16, 36, 64, 100]



위 코드에서 먼저 `filter()`로 짝수만 선택하고, 그 결과에 `map()`을 사용하여 제곱을 구합니다. 이런 식으로 여러 함수를 조합해 데이터를 유연하게 변형할 수 있습니다.

4. 언제 `filter()`와 `map()`을 사용하면 좋을까?

- `filter()`는 **특정 조건에 맞는 데이터만 선택**할 때 유용합니다.
- `map()`은 **모든 데이터를 변환**해야 할 때 유용합니다.

반응형