람다(lambda)란??
람다(lambda)는 익명함수를 지칭하는 용어입니다.
익명함수는, 함수지만 기존의 함수 선언 문법과 달리 함수를 명명하지 않고도 정의할 수 있는 함수입니다.
# 기존 함수 정의
def example_plus(a, b):
return a + b
print(example_plus(4,2))
# 람다 함수
example_plus = lambda a, b : a+b
print(example_plus(4,2))
- 기존 함수보다 람다함수가 더 간결하다.
- 함수를 정의하면서 바로 변수에 넣을 수 있어서 편리하다
map, reduce, filter
a = [1, 6, 2, 5, 2, 7, 2, 8, 9, 11, 5, 26]
result = list(map(lambda x : x**2, a)) # 제곱시키기
print(result)
result2 = list(map(lambda x : str(x) if x % 2 == 0 else x, a)) # 짝수인 것은 string 타입으로 cast 아니면 단순히 반환
print(result2)
b = [12, 16, 24, 5, 20, 27, 12, 8, 9, 110, 51, 26]
result3 = list(map(lambda x, y : x + y, a, b)) # 리스트 자료형 두 개 받아서 연산
print(result3)
"""
output:
[1, 36, 4, 25, 4, 49, 4, 64, 81, 121, 25, 676]
[1, '6', '2', 5, '2', 7, '2', '8', 9, 11, 5, '26']
[13, 22, 26, 10, 22, 34, 14, 16, 18, 121, 56, 52]
"""
map은 파이썬 함수와 데이터를 입력값으로 받고 / 각 데이터에 함수를 대응시켜 그 값을 반환하는 역할을 합니다.
밑에서 주목할 표현식은 파이썬에서 쓰이는 독특한 if 구문입니다. 주의할 점은 이 구문은 반드시 else를 써줘야 합니다.
a = [8, 4, 2, 5, 2,7, 9, 11, 26, 13]
result = list(filter(lambda x : x > 7 and x < 15, a))
print(result)
[8, 9, 11, 13]
filter는 boolean값을 리턴하는 함수를 받아 / 이 조건에 맞으면 데이터를 반환하고 그렇지 않으면 반환하지 않습니다.
from functools import reduce
t = [47, 11, 42, 13]
result = reduce(lambda x, y : x + y, t)
print(result)
113
reduce는 요소를 처음부터 순차적으로 순회하여 지정된 함수로 처리합니다.
참고로 reduce는 functools 모듈을 불러와야 사용가능 합니다.
아래는 reduce의 일의 순서를 의미합니다.
https://engkimbs.tistory.com/657
https://www.coursera.org/learn/python-data-analysis
'대학원 공부 > programming language' 카테고리의 다른 글
HTML : HTML 기본 tag (0) | 2019.12.13 |
---|---|
Python : basic : Override vs Overload (0) | 2019.12.01 |
Python : basic : 문자열 (re) (0) | 2019.11.22 |
Python : basic : 문자열 (format) (0) | 2019.11.22 |
Python : basic : list.sort(), sorted (0) | 2019.11.22 |
댓글