12장 연습 문제 7번

이번 문제는 집합 Set 클래스를 구성하는 문제이다.

문제에서 교집합, 합집합, 교집합을 구성하고 각종 메소드도 구현하라고 했다.
class Set :
    def __init__(self, i = []) :
        if isinstance(i, Set) == True :
            self.set_list = i.set_list[:]
        else :
            self.set_list = list(i)

    def __and__(self, other) :
        temp = []
        for k in other.set_list :
            if k in self.set_list :
                temp.append(k)
        return temp

    def __or__(self, other) :
        temp = self.set_list[:]
        for k in other.set_list :
            if k not in self.set_list :
                temp.append(k)
        return temp

    def __sub__(self, other) :
        temp = []
        for k in self.set_list :
            if k not in other.set_list :
                temp.append(k)
        return temp

    def __len__(self) :
        return len(self.set_list)

    def __getitem__(self, i) :
        return self.set_list[i]

    def __setitem__(self, i, value) :
        if value not in self.set_list :
            self.set_list[i] = value

    def __delitem__(self, i) :
        self.set_list.pop(i)

    def __contains__(self, item) :
        return item in self.set_list

    def __nonzero__(self) :
        if self.set_list == [] : return 0
        else : return 1
간단한 클래스를 작성하면 위와 같이 작성해볼 수 있다. 좀더 제대로 작성하려면 수정이 더 필요하지만 집합 연산은 Set 끼리만 하고, 인덱스 호출은 인덱스 범위 내에서만 사용한다는 가정을 두었다.

댓글 없음:

댓글 쓰기