본문 바로가기
대학원 공부/programming language

Python : basic : lambda function(람다함수)

by 월곡동로봇팔 2019. 11. 23.

람다(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의 일의 순서를 의미합니다.

Reduce 진행 순서

 

 

https://engkimbs.tistory.com/657

 

[Python 데이터 분석] 파이썬 람다 ( Python lambda )

| 람다(lambda)란? 람다(lambda)는 익명함수를 지칭하는 용어입니다. 그렇다면 익명 함수란 무엇일까요? 함수지만 기존의 함수 선언 문법과 달리 함수를 명명하지 않고도 정의할 수 있는 함수입니다. 기존의 프로..

engkimbs.tistory.com

 

https://www.coursera.org/learn/python-data-analysis

 

Introduction to Data Science in Python | Coursera

Learn Introduction to Data Science in Python from 미시건 대학교. This course will introduce the learner to the basics of the python programming environment, including fundamental python programming techniques such as lambdas, reading and manipulating ...

www.coursera.org

 

댓글