본문 바로가기

Python

파이썬 (map, filter, reduce, lambda)

1. map 

 

map 함수는 파이썬 내장 함수로, 주어진 함수를 시퀀스의 각 요소에 적용하여 새로운 시퀀스를 반환하는 역할을 한다. map 함수는 일반적으로 함수를 반복적으로 적용하여 변환 작업을 수행할 때 사용된다.

 

구조 : map(function, iterable)

 

function: 시퀀스의 각 요소에 적용할 함수
iterable: 변환을 수행할 시퀀스 또는 이터러블 객체

 


def factorial(x):
    if x == 1:
        return 1
    else:
        return x * factorial(x-1)

print(list(map(factorial, range(1, 11))))

 

 

 

2. filter 

 

filter 함수는 주어진 조건에 따라 시퀀스의 요소를 걸러내는 역할을 한다. 파이썬 내장 함수로 제공되며, 주어진 함수의 반환값이 True인 요소만 선택하여 새로운 이터러블 객체로 반환한다.

 

구조 : filter(function, iterable)

 

function: 시퀀스의 각 요소에 적용할 함수 (근데 필터링 역할을 해주는 함수여야 함)
iterable: 변환을 수행할 시퀀스 또는 이터러블 객체

 


def is_even(x):
    return x % 2 == 0

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = filter(is_even, numbers)

print(list(even_numbers))  # 출력: [2, 4, 6, 8, 10]

 

 

 

3. reduce 


from functools import reduce

def multiply(x, y):
    return x * y

numbers = [1, 2, 3, 4, 5]
product = reduce(multiply, numbers)

print(product)  # 출력: 120

 

 

5개의 인자를 가진 리스트에서 앞에서 1, 2번째의 인자를 가져와서 함수에 적용한다.

1, 2번째의 인자를 제거하고, 결과 값을 첫번째 인자로 넣어준다.

그리고 반복...

 

(1) [1, 2, 3, 4, 5]

-> 1 * 2 

= 2 

 

(2) [2, 3, 4, 5]

-> 2 * 3

= 6 

 

(3) [6, 4, 5]

-> 6 * 4

= 24

 

(4) [24, 5]

-> 24 * 5 

= 120 

 

 

 

 

4. Lambda

 

람다(lambda) 함수는 파이썬에서 익명 함수(anonymous function)를 생성하기 위해 사용되는 표현식이다. 람다 함수는 단일 문장으로 표현되며, 일반적인 함수와 달리 함수 정의를 간결하게 작성할 수 있다.


다만, 웬만하면 람다보다는 함수를 사용하라고 권고되며, 람다를 사용하게 된다면 다른 사용자들을 위해서 주석을 남기는 것을 추천하고 있다. 

 

구조
lambda arguments: expression


arguments: 람다 함수의 인자. 2개 이상의 인자도 받을 수 있고, 쉼표로 구분된다.
expression: 람다 함수의 본체로, 인자를 이용하여 수행할 작업을 표현하는 식

add = lambda x, y: x + y
result = add(3, 4)
print(result)  # 출력: 7

 

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