파이썬기초 람다식

김재민·2022년 1월 19일
0
post-thumbnail
post-custom-banner

람다식

람다식 정의

아주 작으며 이름이 없는 함수
문법적으로는 하나의 표현식만 사용되어야 함

def function(x):
	return x

lambda x : x

{ 키워드 : lambada}
{ 매개변수 : x }
{ 실행영역 : x }

람다식 구현

인수 x에 1을 더하는 식

lambda x : x+1

문법적으로는 하나의 표현식만 사용되어야 함

(lambda x : x+1)(2)

위의 식이 실행되는 과정

(lambda x : x+1)(2)
	= lambda 2 : 2 + 1
    = 2 + 1
    = 3

람다함수

람다함수를 함수명으로 할당하여 호출

add_one = lambda x : x+1
add_one(2)
3

위의 람다함수와 동일한 일반 함수

def add_one(x) :
 return x+1

매개변수

람다함수는 일반함수와 동일한 매개변수 사용이 가능

>>> (lambda x, y, z : x + y + z)(1, 2, 3)
6

>>> (lambda x, y, z=3 : x + y + z)(1, 2)
6

>>> (lambda x, y, z=3 : x + y + z)(1, y=2)
6

>>> (lambda * args : sum(args))(1, 2, 3)
6

익명함수

익명함수는 이름이 없는 함수

>>> lambda x, y : x+y

익명함수 호출

-() 형태로 대화형 인터프리터 방식의 함수 호출

>>> -(1,2)
3

IIFE(Immediately Inovked Function Expression)

익명함수 정의와 동시에 호출

>>> (lambda x, y : x + y)(2,3)
5

람다함수 변수 정의 함수 변수를 선언가능

>>> high_ord_func = lambda x, func : x + func(x)
>>> high_ord_func(2, lambda x : x*x)
6
>>> high_ord_func(2, lambda x : x+3)
7

map

map(function, iterable, ...)

함수(function)와 반복 가능한(iterable) 자료형을 입력
입력받은 자료형의 각 요소를 함수가 수행한 결과를 리턴
>>> my_power(x):
    return x*2

>>> list(map(my_power,[1, 2, 3, 4]))
[2, 4, 6, 8]


>>>list(map(lambda a: a*2, [1, 2, 3, 4]))
[2, 4, 6, 8]

Filter

  • Filter 함수는 걸러낸다는 의미

  • filter 함수는 첫 번째 인수로 함수 이름을, 두 번째 인수로 그 함수에 차례로 들어갈 반복 가능한 자료형

  • 두 번째 인수인 반복 가능한 자료형 요소가 첫 번째 인수인 함수에 입력되었을 때 반환 값이 참인 경우만 리턴

def my_positive(numberList):
  result = []
  for num in numList:
    if num >0:
      result.append(num)
  return result
  
 print(my_positive([1, -7, 5, 0, -4, 6]))

def my_positive(x):
  return x > 0

print(list(filer(my_positive, [1, -7, 5, 0, -4, 6])))
[1, 5, 6]

>>> list(filter(lambda x : x>0, [1, -7, 5, 0, -4, 6]))
[1, 5, 6]

reduce

reduce(function, iterable)

함수(function)와 반복 가능한(iterable)자료형을 입력
입력받은 원소와 함수의 리턴 값을 누적한 하나의 결과를 리턴
>>> reduce(lambda x, y : x+y, [30, 40, 80, 60])
210

리스트의 최대값을 구하는 람다식을 reduce 이용하여 작성

>>> f = lambda a, b : a if(a > b) else b
>>> reduce(f, [50, 22, 42, 103, 13])
103
>>>
1에서 100까지의 합을 구하는 식
>>> reduce(lambda x, y : x+y, range(1,101))
5050

cf ) reduce함수를 쓰기위해서는

from functools import reduce

를 추가해주어야함

정리

람다식의 활용

  • 함수의 정의를 매개변수를 선언된 내장 함수 사용 시 매우 유용하다.
  • map(function, iterable, ...) : 해당 함수에 의해서 각 아이템이 변경
  • filter(function, iterable) : 해당 함수가 참인 아이템들을 리턴
  • reduce(function, iterable) : 각 아이템이 함수의 매개변수로 전달되고 얻어진 결과를 다시 함수에 적용하여 누적된 결과 값을 리턴
profile
어제의 나보다 나은 오늘의 내가 되자!🧗‍♂️
post-custom-banner

0개의 댓글