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객체 내부도 변하게 된다.
'언어 > 파이썬' 카테고리의 다른 글
함수의 인자 전달 (0) | 2021.03.30 |
---|---|
python sort lambda multiple keys(여러키로 정렬) (0) | 2021.02.12 |
[python] 2차원 배열 돌리기 (0) | 2021.01.19 |
[python] 여러 개의 숫자들 중 특정 숫자가 포함된 숫자 찾기 (0) | 2021.01.18 |
[python] pass와 continue (0) | 2021.01.18 |
댓글