개요
이번 강좌에서는 파이썬의 고급 문법 중 리스트 컴프리헨션과 람다 함수, 그리고 이와 함께 자주 사용되는 map(), filter(), reduce() 함수에 대해 자세히 알아보겠습니다. 이러한 문법은 코드를 간결하고 효율적으로 작성할 수 있도록 도와주어, 반복적인 작업이나 데이터 처리에서 큰 도움이 됩니다. 각 개념에 대해 친절한 예제와 함께 실제 실행 결과를 확인해 보며, 고급 문법의 활용법을 익혀보시길 바랍니다.
리스트 컴프리헨션
리스트 컴프리헨션은 기존 리스트를 기반으로 새로운 리스트를 간단하고 직관적으로 생성할 수 있는 문법입니다. 복잡한 for문과 조건문을 한 줄의 코드로 표현할 수 있어, 코드를 읽기 쉽게 만들고 실행 속도 또한 향상시킬 수 있습니다.
예제 코드:
# 0부터 9까지의 숫자 중 짝수만 추출하는 리스트 컴프리헨션 예제
even_numbers = [x for x in range(10) if x % 2 == 0]
print("짝수 리스트:", even_numbers) # 결과: [0, 2, 4, 6, 8]
실행 결과:
짝수 리스트: [0, 2, 4, 6, 8]
위 코드에서 range(10)을 통해 0부터 9까지의 숫자를 생성한 후, 조건 if x % 2 == 0을 만족하는 숫자만 리스트에 포함시켜 새로운 리스트를 만듭니다.
람다 함수
람다 함수는 익명 함수(이름 없이 간단한 기능을 수행하는 함수)를 한 줄에 정의할 수 있는 축약된 문법입니다. 주로 간단한 연산이나 함수를 인자로 넘길 때 유용하게 사용됩니다.
예제 코드:
# 숫자를 두 배로 만드는 람다 함수 예제
double = lambda x: x * 2
print("5의 두 배:", double(5)) # 결과: 10
실행 결과:
5의 두 배: 10
람다 함수는 lambda 키워드 뒤에 인자들을 작성하고, 콜론(:) 뒤에 실행할 표현식을 적습니다. 위 예제에서는 입력받은 숫자 x를 2배로 만들어 반환합니다.
map(), filter(), reduce() 활용법
파이썬에서는 람다 함수와 함께 map(), filter(), reduce() 함수를 사용하여 데이터 처리 작업을 효과적으로 수행할 수 있습니다.
map() 함수
map() 함수는 지정된 함수와 반복 가능한 객체를 인자로 받아, 각 요소에 함수를 적용한 결과를 반환합니다.
예제 코드:
# 리스트의 모든 요소를 두 배로 만드는 예제
numbers = [1, 2, 3, 4, 5]
doubled_numbers = list(map(lambda x: x * 2, numbers))
print("두 배가 된 숫자 리스트:", doubled_numbers) # 결과: [2, 4, 6, 8, 10]
실행 결과:
두 배가 된 숫자 리스트: [2, 4, 6, 8, 10]
filter() 함수
filter() 함수는 지정된 함수의 조건을 만족하는 요소들만 추출합니다.
예제 코드:
# 리스트에서 짝수만 추출하는 예제
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print("짝수 리스트 (filter 사용):", even_numbers) # 결과: [2, 4]
실행 결과:
짝수 리스트 (filter 사용): [2, 4]
reduce() 함수
reduce() 함수는 반복 가능한 객체의 모든 요소를 누적하여 단일 값으로 줄이는 함수입니다. 파이썬 3부터는 내장 함수가 아닌 functools 모듈에 포함되어 있으므로, 사용 시 반드시 import 해야 합니다.
예제 코드:
from functools import reduce
# 리스트의 모든 숫자를 합산하는 예제
total = reduce(lambda a, b: a + b, numbers)
print("리스트의 합 (reduce 사용):", total) # 결과: 15
실행 결과:
리스트의 합 (reduce 사용): 15
reduce()는 두 인자를 받아 누적 계산을 진행하는 람다 함수를 반복 적용하여 리스트의 모든 값을 하나의 결과로 합칩니다.
정리
- 리스트 컴프리헨션: 간결한 문법으로 조건에 맞는 새로운 리스트를 쉽게 생성할 수 있습니다.
- 람다 함수: 익명 함수를 한 줄로 정의하여 간단한 연산을 수행할 때 유용합니다.
- map() 함수: 반복 가능한 객체의 각 요소에 함수를 적용하여 새로운 리스트를 생성합니다.
- filter() 함수: 조건에 맞는 요소들만 추출하여 새로운 리스트로 만듭니다.
- reduce() 함수: functools 모듈을 통해 리스트의 모든 요소를 누적 연산하여 단일 결과로 줄입니다.
'개발 > Python' 카테고리의 다른 글
[Python 파이썬] 12. 객체 지향 프로그래밍 (OOP) (0) | 2025.02.15 |
---|---|
[Python 파이썬] 11. 예외 처리 (0) | 2025.02.14 |
[Python 파이썬] 10. 파일 입출력 (0) | 2025.02.13 |
[Python 파이썬] 9. 모듈과 패키지 (0) | 2025.02.12 |
[Python 파이썬] 8. 함수의 이해와 활용 (0) | 2025.02.11 |