도해 Python 의 깊이 copy(통속 적 으로 알 기 쉽다)
할당 연산
l1 = [1, 2, 3, [22, 33]]
l2 = l1
l1.append(666)
print(l1) # [1, 2, 3, [22, 33], 666]
print(l2) # [1, 2, 3, [22, 33], 666]
도해:주의:
l2 = l1
하나의 지향 이 고 할당 입 니 다.깊이 copy 와 무관 합 니 다.얕 은 복사
사실 목록 은 하나의 슬롯 입 니 다.각 슬롯 은 이 대상 의 메모리 주 소 를 저장 합 니 다.
1.
l1 = [1, 2, 3, [22, 33]]
l2 = l1.copy()
# , copy
# import copy
# l2 = copy.copy(l1)
l1.append(666)
print(l1) # [1, 2, 3, [22, 33], 666]
print(l2) # [1, 2, 3, [22, 33]]
2.
l1 = [1, 2, 3, [22, 33]]
l2 = l1.copy()
l1[-1].append(666)
print(l1) # [1, 2, 3, [22, 33, 666]]
print(l2) # [1, 2, 3, [22, 33, 666]]、
3. l1 6
l1 = [1, 2, 3, [22, 33]]
l2 = l1.copy()
l1[0] = 6
print(l1) # [6, 2, 3, [22, 33]]
print(l2) # [1, 2, 3, [22, 33]]
도해:예 1
예 2
예 3
요약:
얕 은 copy:메모리 에 공간 을 새로 열 어 이 copy 의 목록 을 저장 하지만 목록 의 내용 은 이전 대상 의 메모리 주 소 를 그대로 사용 합 니 다.
주의:
슬라이스 중 에 다 자 르 면 얕 은 copy 에 속 합 니 다.
딥 카피
import copy
l1 = [1, 2, 3, [22, 33]]
l2 = copy.deepcopy(l1)
l1.append(666)
print(l1) # [1, 2, 3, [22, 33], 666]
print(l2) # [1, 2, 3, [22, 33]]
도해:본질은 다음 그림 과 같다.
그러나 python 은 딥 copy 를 최적화 시 켰 습 니 다.가 변 적 인 데이터 형식 을 메모리 에 다시 만 들 었 습 니 다.가 변 적 이지 않 은 데이터 형식 은 이전 것 을 그대로 사용 하기 때문에 메모리 에는 다음 과 같 습 니 다.
요약:
딥 copy:메모리 에 새로운 공간 을 열 고 원 목록 과 목록 에 있 는 가 변 데이터 형식 을 다시 만 들 것 입 니 다.가 변 데이터 형식 은 이전 과 같 습 니 다.
파 이 썬 의 깊 고 얕 은 copy(통속 적 이 고 알 기 쉬 운)에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 의 깊 고 얕 은 복사 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.