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
반응형
'Python' 카테고리의 다른 글
파이썬 중급 #077 리스트 - 값으로 호출하기(call by value) (0) | 2022.05.23 |
---|---|
파이썬 중급 #076 리스트 - 깊은 복사(deep copy)-인덱스복사 (3) (0) | 2022.05.22 |
파이썬 중급 #074 리스트 - 깊은 복사(deep copy) (1) (0) | 2022.05.20 |
파이썬 중급 #073 리스트 - 복사(shallow copy)에 대한 이해 (0) | 2022.05.19 |
파이썬 중급 #072 리스트 - 정렬하기 리스트명.sort(), sorted(리스트명) (0) | 2022.05.18 |
댓글