Byeonguk Kim

안녕하세요. 29살의 조금은 늦은 나이로 새롭게 개발자로 시작하는 신입 개발자입니다. 포트폴리오 [https://deaguowl.github.io]

파이썬 09. lambda

13 Mar 2019 » Python

2019.03.13 TIL

(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)

# 질문에 답하기

  1. 람다함수에 대해 이야기해보기

lambda

lambda : 익명함수

즉 이름이 없다. 함수를 재사용하지 않고 몇 번 정도만 쓸 때 사용한다.(바로 문장 내에서 함수를 바로 실행할 때)

파이썬에서 함수는 “식”이다.
그리고 식은 (반환)값이 있다. 따라서 파이썬에서 모든 함수는 반환값을 가지고 있다.

10 역시 단항식이다.
‘i am your father’ 역시 식이다.

def func(a,b):
    return a+b 		# 함수는 리턴을 하니깐 식이다 
def func(a,b):
    a+b              # 이것 역시 식이다. None을 반환한다.
    
print(print(func(10,20)) # None, None 


func 
<function __main__.func(a, b)>

lambda a,b: a+b 		#같은 펑션이 메모리에는 생겼으나, 변수에 따로 할당해놓지 않으면 접근할 수 없다.  
<function __main__.<lambda>(a, b)>

lambda 기본 문법

lambda 한칸 띄우고 바로 쓴다. lambda a, b: return a + b #람다는 무조건 값을 반환하기 때문에 return을 적어주지 않는다. —> lambda a,b: a+b —>이게 맞는 것이다.

f2 = lambda a,b:a+b #return이 명시되지 않았지만 암묵적으로 무조건 리턴이 있다.

lambda 사용법

  • 정렬에 사용하기
li = [5, 2, 3, 1, 7, 10]  # 짝수는 앞에 홀수는 위로 배열하고 싶다면

li.sort(key =  ,reverse=True) # sort에는 key가 들어갈 수 있고 정렬에 쓰이는 키를 pred key라고 한다.

# 구현
def pred(x):
    return x % 2 -----> 0 1 반환하는데 오름차순으로 하면 0 먼저 오므로 짝수가 먼저 반환
li.sort(key=pred)
print(li)
[2, 10, 5, 3, 1, 7]

# 홀수 먼저 오고 싶다고 하면

li.sort(key=pred, reverse=True)
li
[5, 3, 1, 7, 2, 10]

#이제 이것을 람다를 활용해서 한번에 적어보자.

li.sort(key=rambda x: x%2, reverse =True)
li
[5, 3, 1, 7, 2, 10]

이 람다를 바탕으로 3가지를 추가적으로 배운다.

  • filter
  • map
  • reduce