본문 바로가기
언어/파이썬

[python] list 복사(copy)

by hazel_ 2021. 1. 19.

list를 복사할 때에는 copy함수를 이용하여 간단하게 복사가 가능하다.

test_1=[[0,0,0],[0,1,0]]
test_2=test_1.copy()
print(test_2)

 

하지만 복사를 한 test_2에 있는 값들을 건들 경우, test_1에 있는 값들까지 변경된다.

test_1=[[0,0,0],[0,1,0]]
test_2=test_1.copy()
print("단순 copy", test_2)
print()

for i in range(len(test_2)):
  for j in range(len(test_2[0])):
    test_2[i][j]+=1

print("test_1은",test_1)
print("test_2는",test_2)
test_2=test_1.copy()

print("copy 후 test_2는",test_2)

 

 

이유

copy 함수는 얕은 복사이다. 얕은 복사는 test_2를 복사한 후 사용하게 됐을 때는 문제가 없지만, test_2안에 있는 내부 list를 건들경우 test_1까지 수정되어버리는 문제가 발생하게 된다.

즉, test_1과 test_2는 다른 객체로 할당이 되었지만, 그 내부에 있는 test_1[0]과 test_2[0]는 같은 메모리 주소를 가리키고 있는 상태이다.

따라서, test_2 객체 내부의 list 객체를 수정하면 test_1객체 내부도 변하게 된다.

댓글