슬라이싱을 이용해 깊은 복사를해도 원래 이런가요?

c = [[1, 2], [3, 4]]
d = c[:]
c[0] = [5, 6]
c[1][0] = 7
print(c)
print(d)
print('%s, %s, %s' % (c is d, c[0] is d[0], c[1] is d[1])

이게 False False True 가 나오던데 왜 이런건지 모르겠습니다..

syd060978 263

2021년 1월 14일 8:35 오후

목록으로
1개의 답변이 있습니다. 1 / 1 Page

d = c[:] 는 깊은 복사가 아니라 얕은 복사입니다.

깊은 복사는 from copy import deepcopy 처럼 deepcopy 를 사용하셔야 해요.

깊은 복사와 얕은 복사의 차이를 알고 계신다면 결과가 저렇게 나오는 것도 이해가 되실 겁니다.

박응용

2021년 1월 15일 4:12 오후