시작전..
정보를 담고있는 리스트를 사용시 원본데이터를 다른 변수에 할당하는 복사를 사용해야하는 경우가 있다.
리스트를 복사할때 항상 발견되는 문제점이 있었는데, 그건 복사된 리스트를 수정 시 원본까지 수정되어버리는 결과가 나타난다. 이것은 얕은복사와 깊은복사에 관련되어있는데 설명과 예시는 다음과 같다.
1) 얕은복사 copy.copy()
import copy
a = [[1,2],[3,4],[5,6]]
b = copy.copy(a)
b[1].append(100)
print(a) # [[1, 2], [3, 4, 100], [5, 6]]
print(b) # [[1, 2], [3, 4, 100], [5, 6]]
위그림에서 알 수 있든 두개의 변수a(원본리스트) 변수b(얕은복사 리스트)는 같은 주소값을 바라보고 있다.
즉 얕은복사는 변수a와 변수b를 독립적인 개체로 보지않고 하나의 데이터를 바라보게 함으로써, 같은 모습을 하고있다.
2) 깊은복사 copy.deepcopy()
import copy
a = [[1,2],[3,4],[5,6]]
b = copy.deepcopy(a)
b[1].append(100)
print(a) # [[1, 2], [3, 4], [5, 6]]
print(b) # [[1, 2], [3, 4, 100], [5, 6]]
진정한 복사는 깊은복사 deepcopy라고 생각한다. 얕은복사에 비해 깊은복사에서 2개의 변수는 각각의 주소값을 따로 가리키고 있다. 즉 깊은복사는 변수a와 변수b를 독립적인 개체로 나타낼 수 있으며, 메모리또한 같다.
'Programming > Python' 카테고리의 다른 글
파이썬 함수 사용법[간단] (0) | 2021.03.01 |
---|---|
파이썬 pass 와 continue 차이점 (0) | 2021.02.26 |
파이썬 리스트(insert, append, extends 추가기능) (0) | 2021.02.22 |
TCP/IP 소켓통신 비디오 프레임[Python] (0) | 2021.01.03 |
Socket 프로그래밍[간단 예제] (0) | 2020.12.27 |