본문 바로가기
Python

파이썬 중급 #074 리스트 - 깊은 복사(deep copy) (1)

by Smart Factory in 2020 2022. 5. 20.
728x90
반응형

안녕하세요. 스마트 팩토리입니다. 파이썬 중급 #074 리스트 - 깊은 복사(deep copy) (1)애 대해 알아보겠습니다. 

1. 깊은 복사 deep cop 

(1) 깊은 복사 
원본의 주소값을 복사하는 것이 아닌 요소값을 가져와서 새로운 객체를 만드는 복사 

 복사본의 요소값을 변경, 추가, 삭제를 해도 원본에는 영향을 미치지 않는다. 
 흔히 알고 있는 복사 방빕
 - 3가지 방법 
 가. list() 메소드 
    list( 원본 리스트)

 나. deepcopy (), copy()메소드 
 다. [:] 인덱스 복사

코드를 보면서 알아보겠습니다. 

nums=list()
for i in range(1,6):
 nums.append(i)
print("nums=",nums)

원본 리스트를 생성합니다. 

1부터 5까지 요소를 가지고 있는 리스트를 만들었습니다. 

print("nums 주소값  :",id(nums))
dc_nums=list(nums)
print("dc_nums =:",dc_nums)
print("dc_nums 주소값  :",id(dc_nums))

 

nums 값을 복사하기 위해서 list()를 사용하였습니다. 

nums의 주소값과 복사본인dc_nums의 주소값이 다른것을 알 수 있습니다. 


nums.append(10)
print("nums=",nums)
print("nums 주소값  :",id(nums))
print("dc_nums =:",dc_nums)
print("dc_nums 주소값  :",id(dc_nums))

원본에 요소값을 10 추가해 보았습니다.

원본 값에만 변동이 생기고 복사본에는 값 변동이 없는 것을 알 수 있습니다. 

이는 복사본 값에 적용해도 마찬가지입니다. 깊은 복사 방식은 우리가 흔히 알고 있는 복사 개념이기 때문에 얕은 복사와 비교해서 꼭 알아야 합니다.

nums=list()
for i in range(1,6):
 nums.append(i)

print("nums=",nums)
print("nums 주소값  :",id(nums))
dc_nums=list(nums)
print("dc_nums =:",dc_nums)
print("dc_nums 주소값  :",id(dc_nums))

nums.append(10)
print("nums=",nums)
print("nums 주소값  :",id(nums))
print("dc_nums =:",dc_nums)
print("dc_nums 주소값  :",id(dc_nums))

 

 

728x90
반응형

댓글