본문 바로가기
Python

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

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

안녕하세요. 스마트팩토리입니다. 
파이썬 중급 #075 리스트 - 깊은 복사(deep copy) 내장함수에 있는 함수를 활용하여 복사하는 법을 알아보겠습니다. 

1. 깊은 복사 (2)

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

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

 나. deepcopy (), copy()메소드 
    from copy import*
    내장함수 메소드 사용

 다. [:] 인덱스 복사

 

from copy import*

내장함수 활용을 위하여 함수호출을 합니다. 함수 파일로 copy인 것을 알 수 있습니다. 

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

print(nums)
print("nums 주소값  :",id(nums))

 

1부터 5까지 요소값으로 가지는 리스트 하나를 만들었습니다. 

 


c_nums=copy(nums)
print("복사본 c_nums",c_nums)
print("복사본 c_nums 주소값  :",id(c_nums))

사본을 내장함수인 copy()를 사용하여 만들었습니다

원본과 사본의 주소값이 다르빈다. 이는 서로 요소값을 변경하여도 영향을 주지 않는 deep 복사라는 것을 알 수 있습니다. deepcopy() 를 사용해도 결과는 동일합니다. 


nums.append(100)
print(nums)
print("nums 주소값  :",id(nums))
print("복사본 c_nums",c_nums)
print("복사본 c_nums 주소값  :",id(c_nums))

 

 

원본에 100을 추가했습니다. 원본에만 추가되고 복사본에는 영향을 주지 않는 것을 알 수 있습니다. 

 

from copy import*
nums=list()
for i in range(1,6):
 nums.append(i)

print(nums)
print("nums 주소값  :",id(nums))

c_nums=copy(nums)
print("복사본 c_nums",c_nums)
print("복사본 c_nums 주소값  :",id(c_nums))

nums.append(100)

print(nums)
print("nums 주소값  :",id(nums))
print("복사본 c_nums",c_nums)
print("복사본 c_nums 주소값  :",id(c_nums))
728x90
반응형

댓글