티스토리 뷰
python의 매력인 lambda, map, filter에 대해 배워보고 다뤄봅시다 !
lambda
표현
lambda arguments : expression
설명
lambda는 파이썬에서 사용되는 익명함수입니다. 기존 함수보다 메모리를 절약하며, 가독성을 향상시킨다는 장점이 있습니다.
예제
add = lambda x, y: x+y
print(add(4, 9)) # 13
even = lambda x: True if x % 2 == 0 else False
print(even(2)) # True
print(even(3)) # False
print([even(a) for a in range(1, 6)]) # [False, True, False, True, False]
# 위와 같지만 할당을 안한 경우
print((lambda x, y: x+y)(4, 9)) # 13
print((lambda x: True if x%2 == 0 else False)(2)) # True
print((lambda x: True if x%2 == 0 else False)(3)) # False
map
표현
map(function_object, iterable1, iterable2,...)
설명
map은 python의 내장함수로써, iterable(list, dictionary 등)의 모든 인자에 대해 function을 수행한 뒤 map iterator 객체로 반환합니다.
예제
def add10(x):
return x + 10
vals = map(add10, [1, 2, 3, 4])
print(type(vals)) # <class 'map'>
# next를 통해 접근 --> pop 같은 것. 나오면서 삭제된다.
print(next(vals)) # 11
print(next(vals)) # 12
print(next(vals)) # 13
print(next(vals)) # 14
# list로 변환 후 사용
vals = map(add10, [1, 2, 3, 4])
print(list(vals)) # [11, 12, 13, 14]
# lambda와 잘 사용된다.
list(map(lambda x: x+10, [1, 2, 3, 4])) # [11, 12, 13, 14]
list(map(lambda x: True if x%2 == 0 else False, [x for x in range(1, 11)])) # [False, True, False, True ... ]
# dict 활용
people = [{'name':'AAA', 'age':25}, {'name':'BBB', 'age':41}, {'name':'CCC', 'age':38}]
list(map(lambda x: x['age'], people)) # [25,41,38]
list(map(lambda x: x['name'] + '님', people)) # ['AAA님', 'BBB님', 'CCC님']
# 여러 iterable를 활용할 수 있다.
l1 = [1, 2, 3, 4]
l2 = [10, 20, 30, 40]
list(map(lambda x, y: x+y, l1, l2)) # [11, 22, 33, 44]
# bmi 계산 예제
height = [171, 183, 162, 193]
weight = [63, 77, 61, 101]
bmi = list(map(lambda x, y: y/(x/100)**2, height, weight))
filter
표현
filter(function_object, iterable)
설명
filter도 내장함수로써, 2개의 인자를 받는다. function_object는 boolean 값을 리턴하는 함수이다. filter는 iterable의 인자들에서 function_object의 조건에 true를 반환하는 값만을 담는다. 전체적인 사용법은 map과 매우 유사하다.
예제
l1 = [x for x in range(1, 51)] # [1, 2, 3, 4, 5 ... 48, 49, 50]
even = filter(lambda x: x%2 == 0, l1)
print(type(even)) # <class 'filter'>
print(next(even)) # 2
print(next(even)) # 4
even = filter(lambda x: x%2 == 0, l1)
print(list(even)) # [2, 4, 6, 8, 10 ... 46, 48, 50]
# dict 활용
people = [{'name':'AAA', 'sex':'male'}, {'name':'BBB', 'sex':'female'}, {'name':'CCC', 'sex':'male'}]
list(filter(lambda x: x['sex'] == 'female', people)) # [{'name': 'BBB', 'sex': 'female'}]
320x100
반응형
'Development > Python' 카테고리의 다른 글
[pytest] python 코드를 테스트 해봅시다. (2) | 2021.01.23 |
---|---|
[Python] 여러 개 값을 기준으로 정렬하는 법 (0) | 2021.01.22 |
필요한 정보를 보내주는 Slack bot을 만들어보자 (0) | 2021.01.22 |
[python] isort (0) | 2019.10.09 |
[python] 파이썬 버전 확인 (0) | 2019.10.08 |
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 하루
- container
- tag
- Algorithm
- 쿠버네티스
- 로그
- docker
- 클린 아키텍처
- Clean Architecture
- WebFlux
- Kubernetes
- 백준
- k8s
- HTTP
- jasync
- Intellij
- 일상
- Istio
- 알고리즘
- boj
- Spring
- java
- gradle
- hexagonal architecture
- MySQL
- 비동기
- Log
- Spring boot
- c++
- python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함