28.4 세트의 할당과 복사

리스트, 딕셔너리와 마찬가지로 세트도 할당과 복사의 차이점이 있습니다. 다음과 같이 세트를 만든 뒤 다른 변수에 할당하고, add로 요소(값)를 추가합니다.

>>> a = {1, 2, 3, 4}
>>> b = a
>>> b.add(5)
>>> a
{1, 2, 3, 4, 5}
>>> b
{1, 2, 3, 4, 5}

b = a와 같이 세트를 다른 변수에 할당하면 세트는 두 개가 될 것 같지만 실제로는 세트가 한 개입니다. 그래서 b.add(5)와 같이 세트 b에 요소(값)를 추가하면 세트 ab에 모두 반영됩니다.

is 연산자로 비교를 해보면 True가 나오므로 두 객체는 같습니다. 물론 세트 안에 들어있는 요소도 같으므로 ==로 비교하면 True가 나옵니다.

>>> a = {1, 2, 3, 4}
>>> b = a
>>> a is b
True
>>> a == b
True

여기서 세트를 완전히 두 개로 만들려면 copy()로 요소(값)를 모두 복사해야 합니다.

>>> b = a.copy()
>>>b.add(5)
>>> a
{1, 2, 3, 4}
>>> b
{1, 2, 3, 4, 5}

b = a.copy()와 같이 copy를 사용한 뒤 b에 할당해주면 세트 a의 요소(값)가 모두 b에 복사됩니다. 이제 세트 ab는 별개이므로 요소를 추가하거나 삭제해도 다른 세트에 영향을 미치지 않습니다.

is 연산자로 비교해보면 False가 나오므로 두 객체가 다르다는 것을 알 수 있습니다. 물론 객체는 다르지만 세트 안에 들어있는 요소는 같으므로 ==로 비교하면 True가 나옵니다.

>>> a = {1, 2, 3, 4}
>>> b = a.copy()
>>> a is b
False
>>> a == b
True
최근 수정: 2017년 9월 4일, 월요일, 오전 11:41