인프런 커뮤니티 질문&답변

이도열님의 프로필 이미지

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

변수가 연동되나요?

해결된 질문

23.01.17 14:57 작성

·

271

1

안녕하세요 선생님

항상 강의 잘 듣고 있습니다.


a변수를 정의하고 나서

b=ab변수를 정의했는데,

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)