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)