-
Python_lambdaProgramming/_Python 2023. 6. 22. 17:20
1. lambda
lambda는 def와 같이 함수를 생성할 때 사용되는 예약어로 함수를 한 줄로 간결하게 만들때 사용된다.
기존 def로 만든 함수와 비교해보면 다음과 같다.
# def로 만든 함수 def test_add(a: int, b: int) -> int: return a+b # lambda로 만든 함수 lambda_add1 = lambda a, b : a+b # 혹은 이렇게 lambda_add2 = (lambda a, b: a+b)(4, 5) print(test_add(4, 5)) print(lambda_add1(4, 5)) print(lambda_add2)
또는 다음과 같이 조건문을 적용할 수 있다.
def if_else(number: int) -> bool: if number >= 10: return True else: return False print(if_else(5)) # False # lambda result_lambda: bool = (lambda number : True if number >= 10 else False)(15) print(result_lambda) # True
2. lambda와 함께 사용되는 함수들
- map()
map은 각 요소들에게 특정한 함수를 적용시킬 때 쓰는 함수이다. 주로 list와 tuple과 함께 사용이 되며 다음과 같은 구조를 갖는다.
- map(function, list), map(function, list): python2
- list(map(function, list)), tuple(map(function, tuple)): python2, python3
위의 첫번째 예시를 Python3에서 사용하면 map object를 반환한다.
예시는 다음과 같다.
import sys my_input = sys.stdin.readline().split() # 입력: 1 2 3 4 5 print(my_input) # str type의 요소를 갖는 list를 얻음 my_input = list(map(int, my_input)) # int type의 요소를 갖는 list로 변경 print(my_input)
이를 lambda와 함께 사용할 수 있는데 응용한 예시는 다음과 같다.
result: list = list(map(lambda a : a*2, range(3))) print(result) # [0, 2, 4]
- filter()
filter는 아래와 같은 구조를 가지며, 주어진 함수에 대해 True 값을 반환해주는 역할을 한다.
- filter(function, list), filter(function, list): python2
- list(filter(function, list)), tuple(filter(function, tuple)): python2, python3
위의 첫번째 예시를 Python3에서 사용하면 filter object를 반환한다.
예시는 다음과 같다.
test_filter = list(filter(lambda x : x < 3, range(5))) print(test_filter) # [0, 1, 2]
이처럼 람다식이 어떠한 조건을 갖는지에 따라 여러가지를 활용할 수 있다.
- reduce()
reduce는 아래와 같은 구조를 가지며 주어진 원소들을 누적하여 반환합니다. reduce를 사용하기 위해서는 모듈을 사용해야 한다.
- reduce(function, list), reduce(function, list)
from functools import reduce ## 1번 예제 my_list = [1,2,3,4,5] test_reduce = reduce(lambda x, y : x + y, my_list) print(test_reduce) # 15 ## 2번 예제 my_list = range(6) test_reduce = reduce(lambda x, y : x+y, my_list) print(test_reduce) # 15
'Programming > _Python' 카테고리의 다른 글
Python_function (0) 2023.06.21 Python_upper_lower (0) 2023.06.15 Python? (0) 2023.06.15