rueki
day5-2. map 함수, reduce 함수 본문
728x90
반응형
이전 시간에는 filter 함수에 대해 알아보았으면 이번 시간에는 map 함수에 대해 알아보자.
- map(정의된 함수나 lambda함수, 데이터(리스트, 튜플)) ->map 오브젝트 생성
- list(map(정의된 함수나 lambda함수, 데이터(리스트, 튜플)))
- 데이터 요소를 정의된 함수의 결과값으로 리턴받는다.
- 결과값을 리스트 요소로 추가한다.
사용자 정의 함수만을 이용한 구현과 map을 이용한 구현의 차이를 알아보자
예시로는 리스트의 제곱값을 반환받는 예제를 사용했다.
1. 사용자 정의 함수 사용
numlist = [1,2,3,4]
def power_fn1(list):
result = []
for i in list:
result.append(i**2)
return result
print(power_fn1(numlist))
2. map을 사용할 함수 정의 및 map 사용
def power_f2(value):
return value**2
print(list(map(power_f2, numlist)))
코드를 입력해보면 위아래 같은 결과가 출력이 될 것이다.
filter()와 마찬가지로 map 역시 for문 혹은 list로만 결과 출력을 확인할 수가 있고
map 그 자체로는 객체만 반환하게 될 것이다.
추가로 람다 함수를 적용해보자
for i in map(lambda x : x**2, numlist):
print(i)
reduce 함수에 대해서도 알아보자
reduce는 외장함수로서, import functools를 임포트 해야하고, 리스트 요소에 함수를 적용해
1개의 결과를 리턴받는다.
reduce(람다나 정의한 함수, 리스트나 튜플)
이제 reduce 함수를 사용해보자.
import functools as f
###################### 일반 함수 적용
numlist = list(range(1,11)) # [1,2,3,4,5,6,7,8,9,10]
def sumList(list):
sum = 0
for i in list:
sum += i
return sum
print(sumList(numlist))
####################### reduce 사용
def add(x,y):
return x+y
print(f.reduce(add, numlist))
#1개의 값만을 반환한다.
######################## lambda 사용
print(f.reduce(lambda x,y:x+y,numlist))
일반함수를 통한 합계, reduce만을 사용한 합계, 람다와 reduce를 사용한 합계를 알아보았다.
확실히 lambda 를 사용한게 코드가 간결한 것을 다시 한번 확인할 수가 있었다.
728x90
반응형
'python' 카테고리의 다른 글
day5-4. 파일입출력 기본 - 파일 쓰기 (0) | 2020.01.12 |
---|---|
day5-3. 파일 입출력 기본 - 파일 입력 (0) | 2020.01.10 |
day5-1. 기타 내장 함수 (0) | 2020.01.07 |
day4-2. lambda 함수, 내장함수 (0) | 2020.01.06 |
day4-1. 함수 (Function) (0) | 2020.01.06 |
Comments