lambda
def와 같이 함수를 생성할 때 사용되는 예약어로 def보다 짧게 작성이 가능합니다.
def 를 쓸 수 없는 구조거나 복잡하지 않은 구조에 lambda를 사용하여 함수를 정의합니다.
>>> mul = lambda a,b: a*b
>>> mul(2,3)
6
>>> def mul(a,b):
return a*b
>>> mul(2,3)
6
def 가 아닌 lambda함수를 사용하는 이유는 일시적인 함수로 필요한 곳에서 사용하고 바로 버릴 수 있습니다. 함수의 이름이 따로 정해줄 필요가 없으며 익명 함수 입니다.
return 문이 필요하지 않고 반환값을 만드는 표현식을 통해 정의합니다.
def 안에서 lambda 함수를 함께 사용하면서 여러개의 증분 함수를 만들어 독립적으로 사용할 수 도 있습니다.
>>> def inc(a)
return lambda x, a : x*a
>>> inc(3)(10)
30
>>> k = inc(2)
>>> g = inc(3)
>>> print(k(3))
6
>>> print(g(3))
9
filter 함수
리스트에 들어있는 원소들을 함수에 적용시켜 결과가 참인 값들만 새로운 리스트로 다시 만들어 줍니다.
반환값은 boolean 값으로 출력하는 데 True 값은 반환, False 값은 제거합니다.
우리가 아는 필터라는 뜻은 무언가를 정제하거나 걸러낸다는 건데 파이썬에서의 filter도 이러한 의미에서 유사하다고 볼 수 있습니다.
>>> list(filter(lambda x:x>0,[1,-3,2,0,-5,6]))
[1,2,6]
>>> def positive_num(x):
return x>0
>>> list(filter(positive_num,[1,-3,2,0,-5,6]))
[1,2,6]
위의 두 예시는 양수를 구하는 함수를 lambda 와 def를 이용하여 정의한 뒤 filter를 이용해서 걸러낸 결과입니다.
filter 함수를 list 함수로 감싸지 않으면 아래와 같이 결과값이 뜨기 때문에 list로 감싸주어야 합니다.
왜 그런지는 저도 잘 모르겠습니다. 혹시 아시는 분 계시면 댓글남겨주시면 함께 공부할 수 있을 것 같습니다. 🙂
-> 파이썬 버전에 따라 다른 듯 한데 파이썬 3 이상이신 분들은 list로 감싸줘야 할 듯 합니다. map함수도 마찬가지
map 함수
map 함수도 filter 함수와 마찬가지로 함수와 리스트를 인자로 받습니다. map 함수는 매핑한다는 말처럼 리스트로 부터 각 원소를 함수에 대입하여 그 결과를 새로운 리스트로 반환해주는 함수입니다.
>>> list(map(lambda x: x*2, range(5)))
[0,2,4,6,8]
>>> def mul(x):
return x*2
>>> list(map(mul, range(5)))
[0,2,4,6,8]
'취준일기' 카테고리의 다른 글
정보처리기사- UML( Unified Modeling Language) (0) | 2020.05.08 |
---|---|
[DF913] 파이썬 기초 훈련 10제_4번 내장함수 lambda,filter,map (0) | 2020.05.06 |
정보처리기사_절차적 프로그래밍 언어와 객체지향 프로그래밍 언어(명령형 언어) (0) | 2020.05.04 |
정보처리기사_스크립트 언어(ASP,JSP,PHP,파이썬, 자바스크립트) (0) | 2020.05.03 |
[DF913] 파이썬 기초 훈련 10제_3번문제 (0) | 2020.05.02 |