1) 단순개체복사
x = 3
y = x
참조변수는 객체의 값의 주소를 저장하고
y=x 를 한다면 x와 y 가 서로 다른 주소에 3을 저장하는 것이
아니라, x와 y가 같은 주소에 있는 3을 가리키고 있다.
-> 단일값 일때는 문제가 없다
단일값: 한개의 값
-> 다중값 일 때 문제가 발생
다중값일 때 단순객체복사를 한다면, 한 값이 변경되면, 다른값도 변경된다.
——————————————————————————————————
2) 얕은복사(shallow copy)
객체를 복사할때, 새로운 리스트를 생성해서, 요소를 복사한다.
얕은복사 방법
b =a.copy()
-> 얕은 복사의 문제
컬렉션이 이중으로 이뤄져있을때,
컬렉션의 요소가 컬렉션일 때 문제 발생
#얕은복사
a=[1,2,3,4]
b=a.copy()
b[2] = 100
'''
print(a)
print(b)
'''
#얕은복사 문제점
a =[1,[2,3,4],5,6,]
b = a.copy()
b[1][0]=100
print(a)
print(b)
————————————————————————————————
3) 깊은복사(deep copy)
컬렉션을 새롭게 생성하고
그 내부의 요소까지 재귀적으로 새롭게 생성
<사용방법>
import copy
b = copy.deepcopy(a)
<실습>깊은복사.py
#깊은복사.py
import copy
a=[1,[2,3,4,],5,6]
#b=a.copy() 얕은복사
b = copy.deepcopy(a)
b[1][0]=100
print(a)
print(b)
*정리
1. 단순객체복사는 모든 값이 동일한 객체
2. 얕은복사는 컬렉션만 새롭게 생성하고 내부요소는 동일한 객체
3. 깊은 복사는 컬렉션과 내부 요소를 재귀적으로 모두 생성하는 다른 객체
---------------------------------------------------------------------
프로그래밍/Python
개체복사
반응형
반응형