p43 에서, 입력받는 자료의 순서를 바꾸면 다른 결과가 나옵니다.

3 views
Skip to first unread message

제임스한

unread,
Oct 20, 2009, 9:25:18 AM10/20/09
to Python 3 질문 게시판
p43 의 맨 위 에제에서 마지막 부분에 있는 intersect(list2, tup1) 의 결과는 ['E'] 가 됩니다만,
만약 intersect(tup1, list2) 로 하면 ['E', 'E'] 라는 결과가 나옵니다.
제대로 된 함수식이라면 순서를 바꾸어도 교집합의 결과로서 동일한 ['E'] 가 나와야 하는 것이 아닐까요?

평면우주

unread,
Oct 20, 2009, 11:52:50 PM10/20/09
to Python 3 질문 게시판
안녕하세요. 저희들의 책을 구매해주시고 꼼꼼히 읽어 봐주셔서 정말 감사합니다.
제임스한님이 말씀하신 것 처럼 인자값을 바꿔서 넣으면 'E','E'가 두 번 들어간 집합이 나오게 됩니다.

이는 집합 내부에 있는 원소들의 중복 체크하지 않고 집합 끼리만 비교하기 때문입니다.
함수를 만들 때 원소들이 중복되지 않는 집합만을 처리할 생각으로 만들었던 것입니다.

하지만 이제보니 제임스한님께서 말씀하신것 처럼 제대로된 교집합 함수는 아래와 같아야 할 것 같네요.
중복되는 원소를 체크하는 부분을 넣었습니다.

>>> def intersect(prelist, postlist):
retList = []
for x in prelist:
if x in postlist and x not in retList:
retList.append(x)
return retList

>>> list2 = "EGG"
>>> tup1 = "BEEF"
>>> tup1
'BEEF'
>>> list2
'EGG'
>>> intersect(tup1,list2)
['E']
>>>

지적하신 부분 감사합니다. 이렇게 보니 더욱 더 교집합 함수같네요. 수정된 부분은 다음쇄에 반영하도록 하겠습니다.
감사합니다.

Reply all
Reply to author
Forward
0 new messages