Programming Languages/Python
함수형 프로그래밍 기초
newclass
2025. 3. 26. 03:18
함수형 프로그래밍 기초
함수형 프로그래밍은 함수를 일급 객체로 취급하고, 데이터의 변경보다 함수의 응용을 중심으로 하는 프로그래밍 패러다임입니다.
map() 함수
map() 함수는 각 요소에 함수를 적용한 결과를 반환합니다.
숫자_리스트 = [1, 2, 3, 4, 5]
# 제곱 함수
def 제곱(x):
return x ** 2
# map() 함수를 사용하여 모든 요소에 제곱 함수 적용
제곱_리스트 = list(map(제곱, 숫자_리스트))
print(제곱_리스트) # 출력: [1, 4, 9, 16, 25]
# 람다 함수와 함께 사용
세제곱_리스트 = list(map(lambda x: x ** 3, 숫자_리스트))
print(세제곱_리스트) # 출력: [1, 8, 27, 64, 125]
filter() 함수
filter() 함수는 조건을 만족하는 요소만 필터링합니다.
숫자_리스트 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 짝수 여부 확인 함수
def 짝수_여부(x):
return x % 2 == 0
# filter() 함수를 사용하여 짝수만 필터링
짝수_리스트 = list(filter(짝수_여부, 숫자_리스트))
print(짝수_리스트) # 출력: [2, 4, 6, 8, 10]
# 람다 함수와 함께 사용
홀수_리스트 = list(filter(lambda x: x % 2 != 0, 숫자_리스트))
print(홀수_리스트) # 출력: [1, 3, 5, 7, 9]
reduce() 함수
reduce() 함수는 요소들을 누적하여 하나의 결과값을 반환합니다.
from functools import reduce
숫자_리스트 = [1, 2, 3, 4, 5]
# 두 수를 더하는 함수
def 더하기(x, y):
return x + y
# reduce() 함수를 사용하여 모든 요소 합산
합계 = reduce(더하기, 숫자_리스트)
print(합계) # 출력: 15 (1+2+3+4+5)
# 람다 함수와 함께 사용
곱 = reduce(lambda x, y: x * y, 숫자_리스트)
print(곱) # 출력: 120 (1*2*3*4*5)
함수 합성(Function Composition)
여러 함수를 조합하여 새로운 함수를 만드는 방법입니다.
def 함수_합성(f, g):
"""두 함수 f와 g를 합성하는 함수"""
return lambda x: f(g(x))
# 제곱 함수
def 제곱(x):
return x ** 2
# 더하기 10 함수
def 더하기_10(x):
return x + 10
# 함수 합성: (x + 10)^2
합성_함수 = 함수_합성(제곱, 더하기_10)
print(합성_함수(5)) # 출력: 225 ((5 + 10)^2)