>백엔드 개발 >파이썬 튜토리얼 >Python에서 맵 필터 감소의 재귀 구현

Python에서 맵 필터 감소의 재귀 구현

高洛峰
高洛峰원래의
2016-10-18 14:32:571332검색

map2=lambda f,seq: [] if seq==[] else [f(seq[0])] + map2(f, seq[1:])
  
filter2=lambda f, seq: [] if seq==[] else ( [seq[0]]+filter2(f, seq[1:]) if f(seq[0]) else filter2(f, seq[1:]) )
  
reduce2=lambda f,seq,x: x if seq==[] else reduce2(f, seq[1:], f(x, seq[0]))
  
scanl=lambda f,seq,x: [x] if seq==[] else  [x] +scanl(f, seq[1:], f(x,seq[0]))
  
  
print map2(str, [1,2,3,5,8])
print filter2(lambda x: x%2==0, range(10))
print reduce2(lambda x,y: ''.join( ['(',x,'+',y,')'] ), map(str,range(1,11)), '0')
print scanl(lambda x,y: ''.join( ['(',x,'+',y,')'] ), map(str,range(1,5)), '0')
  
  
#Out:
#['1', '2', '3', '5', '8']
#[0, 2, 4, 6, 8]
#((((((((((0+1)+2)+3)+4)+5)+6)+7)+8)+9)+10)
#['0', '(0+1)', '((0+1)+2)', '(((0+1)+2)+3)', '((((0+1)+2)+3)+4)']

Python에서 맵 필터 축소의 재귀 구현, 참고: 메모리 오버플로에 주의하세요

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.