이번에는 리스트의 할당과 복사에 대해서 알아보자 이 둘은 비슷한 것 같지만 큰 차이점이 존재한다. 먼저 다음 코드를 보자
>>> a = [0, 0, 0, 0, 0]
>>> b = a
리스트를 만든 다음에 다른 변수에 할당하였다. 이렇게 다른 변수에 할당하면 리스트는 두 개가 될 것 같지만 실제로 리스트는 한 개이다.

>>> a is b
True
a 와 b 를 is 연산자로 비교해보면 True 가 나온다. 즉, 변수 이름만 다를 뿐 두 변수는 같은 객체이다.
a 와 b 가 같으므로 b[2] = 99 과 같이 b 의 요소를 변경하면 리스트 a, b 모두 반영이 된다.
>>> a = [0, 0, 0, 0, 0]
>>> b = a
>>> b[2] = 99
>>> a
[0, 0, 99, 0, 0]
>>> b
[0, 0, 99, 0, 0]

copy )실제로 두 개의 리스트를 만들기 위해서는 copy 메서드를 사용해야한다.
>>> a = [0, 0, 0, 0, 0]
>>> b = a.copy()
위 코드와 같이 copy 를 한 뒤에 b 에 할당한다 그러면 b 리스트에는 a 리스트의 모든 요소가 복사된다.

그렇게 되면 요소는 같지만 서로 다른 리스트가 두 개 생긴다.
실제로 a 와 b 를 is 연산자로 비교해보면 False 가 나온다. 즉, 두 리스트는 다른 객체이다. 그러나 복사된 요소들은 모두 같으므로 == 연산자로 비교하면 True 가 나온다.
>>> a is b
False
>>> a == b
True
이제 a 리스트와 b 리스트는 서로 별개이므로 한쪽의 값을 변경해도 다른 쪽에서는 어떠한 영향도 끼치지 않는다.
>>> b[2] = 99
>>> a
[0, 0, 0, 0, 0]
>>> b
[0, 0, 99, 0, 0]
