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()`은 **모든 데이터를 변환**해야 할 때 유용합니다.
'언어 > python' 카테고리의 다른 글
[알고리즘] 백준 2630번 - 재귀함수 문제풀이 (0) | 2023.02.16 |
---|---|
[알고리즘] 그리디 알고리즘 (0) | 2023.01.08 |
웹툰 이미지 크롤링하기 (0) | 2020.11.25 |