filter, map, reduce
- lambda가 유용하게 사용되는 3가지 대표적 함수
- 함수형 프로그래밍의 기본 요소이기도 함
- filter : 특정 조건을 만족하는 요소만 남기고 필터링
- map : 각 원소를 주어진 수식에 따라 변형하여 새로운 리스트를 반환
- reduce : 차례대로 앞 2개의 원소를 가지고 연산. 이것을 마지막 원소까지 진행
### filter
1 2 3 4 5 6 7 8 9 10 | nums = range(2, 100) print filter(None, nums) print filter(lambda x : x % 2 == 0, nums) <<<<< 실행결과 >>>>> [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, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99] [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98] | 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(2, 10) print 'map을 이용함' print map (lambda x : 2 ** x , nums) print 'comprehension을 이용함' print [2 ** x for x in nums] <<<<< 실행결과 >>>>> map을 이용함 [4, 8, 16, 32, 64, 128, 256, 512] comprehension을 이용함 [4, 8, 16, 32, 64, 128, 256, 512] | cs |
1 2 3 4 5 6 7 8 9 10 | a = [1,2,3,4] b = [17,12,11,10] c = [-1,-4,5,9] print map(lambda x, y, z : x + y + x, a, b, c) <<<<< 실행결과 >>>>> [19, 16, 17, 18] | cs |
### reduce 이용하여 원소의 합 구하기
1 2 3 4 5 6 7 | nums = [1, 2, 9, 8, 5, 4, 7, 10, 3] print reduce(lambda x, y : x + y, nums) <<<<< 실행결과 >>>>> 49 | cs |
### reduce로 리스트의 최대값 구하기
1 2 3 4 5 6 7 | nums = [1, 2, 9, 8, 5, 4, 7, 10, 3] print reduce(lambda x, y : x if x > y else y, nums) <<<<< 실행결과 >>>>> 10 | cs |
반응형
'Python > Python Basic' 카테고리의 다른 글
Day5) 4. import/from import (0) | 2017.05.25 |
---|---|
Day5) 3. 예외처리(try-except, finally), 예외처리세분화 (0) | 2017.05.25 |
Day5) 1. Lambda 함수 (0) | 2017.05.25 |
Day4) 4. 1st class citizen(일등 시민) (0) | 2017.05.25 |
Day4) 3. variable length argument(가변길이 인자) (0) | 2017.05.25 |