본문 바로가기

Python/Python Basic

Day5) 2. filter, map, reduce

filter, map, reduce

- lambda가 유용하게 사용되는 3가지 대표적 함수

- 함수형 프로그래밍의 기본 요소이기도 함

- filter : 특정 조건을 만족하는 요소만 남기고 필터링

- map : 각 원소를 주어진 수식에 따라 변형하여 새로운 리스트를 반환

- reduce : 차례대로 앞 2개의 원소를 가지고 연산. 이것을 마지막 원소까지 진행


### filter

1
2
3
4
5
6
7
8
9
10
nums = range(2100)
 
print filter(None, nums)
print filter(lambda x : x % 2 == 0, nums)
 
<<<<< 실행결과 >>>>>
 
[23456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899]
[2468101214161820222426283032343638404244464850525456586062646668707274767880828486889092949698]
 
cs


### filter를 이용하여 문자열의 길이가 5 이하인 문자열만 필터링 하시오.

1
2
3
4
5
6
str1 = ['banana''apple''cat''hahahahahahah''hahahahah']
print filter(lambda x : len(x) <= 5, str1) 
 
<<<<< 실행결과 >>>>>
 
['apple''cat']
cs


### map

1
2
3
4
5
6
7
8
9
10
11
12
nums = range(210)
print 'map을 이용함'
print map (lambda x : 2 ** x , nums)
print 'comprehension을 이용함'
print [2 ** x for x in nums]
 
<<<<< 실행결과 >>>>>
 
map을 이용함
[48163264128256512]
comprehension을 이용함
[48163264128256512]
cs


1
2
3
4
5
6
7
8
9
10
= [1,2,3,4]
= [17,12,11,10]
= [-1,-4,5,9]
 
print map(lambda x, y, z : x + y + x, a, b, c)
 
<<<<< 실행결과 >>>>>
 
[19161718]
 
cs


### reduce 이용하여 원소의 합 구하기

1
2
3
4
5
6
7
nums = [1298547103]
print reduce(lambda x, y : x + y, nums)
 
<<<<< 실행결과 >>>>>
 
49
 
cs


### reduce로 리스트의 최대값 구하기

1
2
3
4
5
6
7
nums = [1298547103]
print reduce(lambda x, y : x if x > y else y, nums)
 
<<<<< 실행결과 >>>>>
 
10
 
cs



반응형