해결된 질문
23.01.17 14:57 작성
·
271
1
안녕하세요 선생님
항상 강의 잘 듣고 있습니다.
a
변수를 정의하고 나서
b=a
로 b
변수를 정의했는데,
b
변수를 바꾸니 b
변수만 변하는게 아니라 a
변수까지 변합니다.
왜 b
변수와 a
변수가 독립적인게 아니라 서로 연결되어있을까요?
그리고, 연결되지 않게 b
변수를 정의하려면 어떻게 해야 할까요?
이게 제 코드입니다.
코드
a = [1, 2, 3]
b = a
b.pop(0)
print(a)
출력 결과
[2, 3]
왜 b
만 바꿔도 a
까지 바뀌는건가요..?
감사합니다.
답변 1
0
2023. 01. 21. 07:30
안녕하세요^^
b = a 를 하면 a리스트의 주소가 b에 전달되는 얕은 복사입니다. 즉 b도 a가 가르키고 있는 메모리 공간을 같이 가르키므로 b로 접근하나, a로 접근하나 메모리의 같은 공간을 접근하는 것입니다.
아래와 같이 하면 깊은 복사를 하게 됩니다. 얕은복사와 깊은 복사를 구글링으로 공부해보세요.
a = [1, 2, 3]
b = a.copy() #깊은복사
b.pop(0)
print(a)