2019.03.13 TIL
(TIL은 스스로 이해한 것을 바탕으로 정리한 것으로 오류가 있을 수 있습니다)
# 질문에 답하기
- 람다함수에 대해 이야기해보기
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