Re: 126페이지 모듈공부중에 이해하기 어려운 것이 있습니다.

60 views
Skip to first unread message

HoChul Shin

unread,
Jul 18, 2012, 1:09:00 AM7/18/12
to simp...@gmail.com, pyt...@googlegroups.com
안녕하세요.

functools.reduce의 정의는 다음과 같습니다.
functools.reduce(func, iter, [initial_value])

여기서는 이야기하신 것과 같이 인력인자가 3개 이상일 경우를 처리하기 위해서 사용되었으며,

이와 같이 3개 인자를 받아 동작하는 것은,
>>> intersect([1,2,3,4],[3,4,5,6],[3,8,9])
[3]

실제로는 아래와 같이 iterative한 리스트를 입력인자를 입력으로 받아 reduce를 활용한 것과 동일합니다.
>>> functools.reduce(_intersect, [[1,2,3,4],[3,4,5,6],[3,8,9]])
[3]

혹시 이 설명으로 모자르시다면, 보다 자세한 사항은 아래의 링크를 참고하시면 좋을 것 같습니다.
http://docs.python.org/dev/howto/functional.html

감사합니다.

2012년 7월 16일 오후 2:35, fx남자의 모든것 <simp...@gmail.com>님의 말:
126페이지 교집합을 만드는 함수에서
--------------------------------------------------------
def intersect(*ar):
     "교집합"
     return reduce(__intersectSC, ar)
 
def __intersectSC(list X, list Y):
     setList = []
     for x in listX:
          if x in listY:
               setList.append(x)
     return setList
------------------------------------------------------
이부분이 이해가 가질 않습니다. reduce함수에서 __intersectSC함수를 호출해서 그 결과값을 받아 매개변수로 넘겨서 reduce함수의 결과값을 교집합값으로 리턴한다는 의미인가요?
분명 교집합을 구하는 부분은 __intersectSC함수에서 이미 끝난 것인데 reduce함수를 쓰는 이유를 모르겠습니다.
제 생각으로는 2개의 리스트만 받을 수 있는 __intersectSC함수에서 3개 이상의 리스트를 받아도 그 결과를 구하기 위해서 사용하는 듯 한데 어떤 방식으로 돌아가는지 잘 이해가 가지 않습니다.
 

--
Google 그룹스 'Python 3 질문 게시판' 그룹에 가입했으므로 본 메일이 전송되었습니다.
웹에서 이 토론을 보려면 https://groups.google.com/d/msg/python3/-/atA_fISn-1QJ을(를) 방문하세요.
이 그룹에 게시하려면 pyt...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 python3+u...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/python3?hl=ko에서 그룹을 방문하세요.



--
-----------------------------
http://dsphome.net/
Reply all
Reply to author
Forward
0 new messages