map함수
map( 함수, 반복 가능한 자료형 )
반복 가능한 자료형 = literable
map은 원본 리스트를 변경하지 않고 새 리스트를 생성한다.
1
2
|
list(map(lambda i:i**2, [1,2,3]))
#[1, 4, 9]
|
1
2
3
4
5
|
a = [2,3,4,5]
for i in range(len(a)):
a[i] = int(a[i])
a
#[2, 3, 4, 5]
|
1
2
|
list(map(int, a))
#[2, 3, 4, 5]
|
1
2
|
list(map(str, a))
#['2', '3', '4', '5']
|
1
2
|
list(map(lambda i:i**2, a))
#[4, 9, 16, 25]
|
리스트 축약 문법
[ {표현식} for {변수} in {반복자/연속열} if {조건표현식} ]
리스트 축약은 편리한 대신 전체 연속열을 모두 평가해서 리스트로 만들기 때문에 메모리 낭비가 심하다.
1
2
3
4
5
6
7
8
9
10
|
xs = range(10)
doubled = [x*2 for x in xs]
#[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
squared = [(x+1)**2 for x in xs]
#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
evens = [x for x in xs if x % 2 is 0]
#[0, 2, 4, 6, 8]
|
reduce 함수
reduce(f, literable)
리듀스는 여러 개의 값인 상태를 축약하여 하나의 값으로 만드는 과정이며,
그 과정이 마치 리스트를 앞에서부터 차곡차곡 접어나가는 것처럼 보인다고 해서 폴딩(folding)이라고 한다.
중간값 | 리스트 | 평가식 |
0 | [1, 2, 3, 4 ,5] | 0 + 1 |
1 | [2, 3, 4, 5] | 1 + 2 |
3 | [3, 4, 5] | 3 + 3 |
6 | [4, 5] | 6 + 4 |
10 | [5] | 10 + 5 |
15 | [] | ::완료 |
1
2
3
|
from functools import reduce
reduce(lambda x,y:x+y,[0,1,2,3,4])
#10
|
1
2
3
|
from functools import reduce
reduce(lambda x,y:x+y, range(0,5))
#10
|
문자열 거꾸로 바꾸기
1
2
3
|
from functools import reduce
reduce(lambda x,y:y+x,list('abcd'))
#'dcba'
|
최댓값 구하기
1
2
3
|
func = lambda a, b: a if (a > b) else b
reduce(func, [34, 76, 29, 96, 68])
#96
|
filter 함수
filter(f, literable)
1
2
|
list(filter(lambda x:x<5, range(10)))
#[0, 1, 2, 3, 4]
|
1
2
|
list(filter(lambda x:x%2, range(10)))
#[0, 2, 4, 6, 8, 10]
|
1
2
|
list(filter(lambda x:x%2, range(10)))
#[0, 2, 4, 6, 8, 10]
|
"x%2" 의미
x%2 != 0 --> true
x%2 == 1 --> true
'웹 프로그래밍 > Python' 카테고리의 다른 글
파이썬 함수란 ? (0) | 2019.08.22 |
---|---|
파이썬 리스트, 튜플, 딕셔너리 자료형 알아보기 (0) | 2019.08.20 |
파이썬의 기초, 숫자형과 문자열 (0) | 2019.08.19 |