본문 바로가기
Python

파이썬 중급 #076 리스트 - 깊은 복사(deep copy)-인덱스복사 (3)

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

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

 

1. 리스트 깊은 복사 (deep copy)

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

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

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

 다. [:] 인덱스 복사
    리스트 변수=원본리스트변수[ 인덱스:인덱스]

    리스트의 일부요소 또는 전체를 인덱스로 복사

 

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

nums=list()
for i in range(1,11):
 nums.append(i)
print("nums의 요소 :",nums)

 

1부터 10까지 요소를 가지고 있는 nums 리스트입니다. 

c_nums=nums[1:6]
print("nums의 부분 복사본  :",c_nums)

c_nums 에 원본 리스트의 일부를 복사하였습니다. 

nums.append(11)
print("nums의 요소 :",nums)
print("nums의 부분 복사본  :",c_nums)

 

원본 리스트 요소를 추가를 해도 복사본에는 영향을 미치지 않습니다.


c_nums.append(100)
print("nums의 요소 :",nums)
print("nums의 부분 복사본  :",c_nums)

 

반대로 복사본에 요소를 추가해도 원본에는 영향을 미치지 않는 것을 알 수 있습니다. 

이는 리스트 복사시 깊은 복사란 것을 이해하는 것이 중요합니다. 

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

print("nums의 요소 :",nums)
c_nums=nums[1:6]
print("nums의 부분 복사본  :",c_nums)

nums.append(11)
print("nums의 요소 :",nums)
print("nums의 부분 복사본  :",c_nums)

c_nums.append(100)
print("nums의 요소 :",nums)
print("nums의 부분 복사본  :",c_nums)
728x90
반응형

댓글