rueki

day5-2. map 함수, reduce 함수 본문

python

day5-2. map 함수, reduce 함수

륵기 2020. 1. 9. 23:49
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