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
반응형
'Python' 카테고리의 다른 글
파이썬 중급 #077 리스트 - 참조로 호출하기(call by reference) (0) | 2022.05.24 |
---|---|
파이썬 중급 #077 리스트 - 값으로 호출하기(call by value) (0) | 2022.05.23 |
파이썬 중급 #075 리스트 - 깊은 복사(deep copy) (2) (0) | 2022.05.21 |
파이썬 중급 #074 리스트 - 깊은 복사(deep copy) (1) (0) | 2022.05.20 |
파이썬 중급 #073 리스트 - 복사(shallow copy)에 대한 이해 (0) | 2022.05.19 |
댓글