26.4 세트의 할당과 복사

세트도 리스트, 딕셔너리처럼 할당과 복사의 차이점이 있습니다. 먼저 세트를 만든 뒤 다른 변수에 할당합니다.

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

b = a와 같이 세트를 다른 변수에 할당하면 세트는 두 개가 될 것 같지만 실제로는 세트가 한 개입니다.

abis 연산자로 비교해보면 True가 나옵니다. 즉, 변수 이름만 다를 뿐 세트 ab는 같은 객체입니다.

>>> a is b
True

ab는 같으므로 b에 요소를 추가하면 세트 ab에 모두 반영됩니다.

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

세트 ab를 완전히 두 개로 만들려면 copy 메서드로 모든 요소를 복사해야 합니다.

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

이제 abis 연산자로 비교해보면 False가 나옵니다. 즉, 두 세트는 다른 객체입니다. 그러나 복사한 요소는 같으므로 ==로 비교하면 True가 나옵니다.

>>> a is b
False
>>> a == b
True

세트 ab는 별개이므로 한쪽의 값을 변경해도 다른 세트에 영향을 미치지 않습니다. 다음과 같이 세트 b에 요소를 추가하면 세트 a는 그대로이고 세트 b만 바뀝니다.

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