본문 바로가기

Python3

Python3에서 Lambda, map, filter, reduce 사용하기

Python2에서 왜 Python3로 넘어가지 못하는 사람들이 존재하는가? 에 대한 의문이 오늘에서야 풀렸다.

 

Python3가 정교해진 탓에 기능을 나누다보니 Python2로 당연하게 지원되는 기능들이 변화하였다. 

 

정리하자면 str형과 int형을 구분해줘야 map, filter 함수들이 pirnt에서 사용이 되고 reduce는 import를 해줘야 한다. 

 

긴 설명은 필요없고 예제로 한방에 정리.

 

#lambda+list
func=[lambda x, y: x+y, lambda x,y:x-y, lambda x,y:x*y, lambda x,y:x/y]    #list

def menu():
  print("0. add")
  print("1. sub")
  print("2. mul")
  print("3. div")
  print("4. quit")
  return int(input('Select menu : '))    #python2에서는 int를 사용하지 않는다.

while 1:    #Unlimit roop
  sel = menu()
  if sel > len(func) or sel < 0 :
    continue
  if sel == len(func):
    break
  x=int(input('First operand : '))    #python2에서는 int를 사용하지 않는다.
  y=int(input('Second operand : '))    #python2에서는 int를 사용하지 않는다.
  print('Result = ', func[sel](x,y))

#map 함수
X=[1,2,3,4,5]
print(list(map(lambda x:x*x,X)))

#Fileter 함수
print(list(filter(lambda x: x>2, [1,2,3,34])))    #lambda 함수를 사용한 filter

#Reduce 함수
from functools import reduce     #reduce함수를 쓰기 위한 추가

print(reduce(lambda x,y:x+y,[1,2,3,4,5]))   #15.