x = 5
y = 3
y = x
print(x)
print(y)
이를 실행하게 되면 x = 3, y = 5가 나온다
그렇다면 아래의 경우는 어떻게 될까?
x = [2, 3, 5, 7, 11]
y = x
y[2] = 4
print(x)
print(y)
x는 [2, 3, 5, 7, 11], y는 [2, 3, 4, 7, 11]가 나온다고 생각하겠지만 x,y 모두 [2, 3, 4, 7, 11]이 나오게 된다.
어떻게 된걸까?
파이썬에서 값을 할당하는 것을 이름표를 붙여준다고 생각할 수 있다
첫번째 예제를 살펴보면
두번째 예제를 살펴보면
해당 리스트는 x,y를 모두 가지고 있기 때문에 값 하나를 바꾸게 되면 모든 값이 변경된다.
위 경우를 해결하려면? 아래의 방법을 사용하면 된다
x = [2, 3, 5, 7, 11]
y = list(x)
y[2] = 4
print(x)
print(y)
두번째 줄의 list() 함수 때문에 동일한 리스트가 복사되어 생성된다.