파이썬 학습의 copy and deepcopy
할당 작업
먼저 동일한 컨텐트의 두 객체를 살펴보겠습니다.lst3 = list(range(4))
lst4 = list(range(4))
print(' ')
print(hash(id(lst3)))
print(hash(id(lst4)))
print(' =')
print(lst3==lst4)
print(' is')
print(lst3 is lst4)
결과:
4377943688
4377942472
=
True
is
False
그런 다음 지정을 사용합니다.lst1 = lst3
print('1 is 3')
print(lst1 is lst3)
print(' ')
print(hash(id(lst1)))
print(hash(id(lst3)))
print(' 1 ')
lst1[2] = 99
print('1 3 :')
print(lst1)
print(lst3)
print('1 is 3')
print(lst1 is lst3)
결과:1 is 3
True
4377943688
4377943688
1
1 3 :
[0, 1, 99, 3]
[0, 1, 99, 3]
1 is 3
True
그 결과 해시 값이 같은 대상만 is인 것으로 나타났다
얕은 복사
위 인쇄 작업을 함수 isequel로 봉하여 간단한 복사 대상의 앞뒤를 비교합니다.lst3 = [1,[10,20],3]
print(' ')
lst4 = lst3.copy()
isequel(lst3,lst4)
print(' 3 ')
lst3[1][1] = 200
print('lst3=')
print(lst4)
print('lst4=')
print(lst4)
isequel(lst3,lst4)
결과:
4382428360
4382428104
=
True
is
False
3
lst3=
[1, [10, 200], 3]
lst4=
[1, [10, 200], 3]
4382428360
4382428104
=
True
is
False
얕게 복사한 후 두 대상은 is가 아니다. 하위 요소 중의 요소를 수정한 후에 변경을 따르면 주소만 복사한 것일 뿐이다.
딥 카피
copy 라이브러리 도입 필요print(' import copy')
lst4 = copy.deepcopy(lst3)
isequel(lst3,lst4)
print(' 3 ')
lst3[1][1] = 300
print('lst3=')
print(lst3)
print('lst4=')
print(lst4)
isequel(lst3,lst4)
결실 import copy
4515200136
4510722440
=
True
is
False
3
lst3=
[1, [10, 300], 3]
lst4=
[1, [10, 200], 3]
4515200136
4510722440
=
False
is
False
심층 복사는 사실 대상의 전체 구조를 복사하고 새로운 것을 만드는 것이기 때문에 네가 바꾸는 것은 나에게 영향을 주지 않는다.
= 딥 카피냐 얕은 카피냐. print('= :')
lst5 = lst4
isequel(lst4,lst5)
lst4[1][1] = 400
print('lst4=')
print(lst4)
print('lst5=')
print(lst5)
isequel(lst5,lst4)
결실= :
4390140616
4390140616
=
True
is
True
lst4=
[1, [10, 400], 3]
lst5=
[1, [10, 400], 3]
4390140616
4390140616
=
True
is
True
결과는'='가 얕은 복사라는 것을 증명했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
lst3 = list(range(4))
lst4 = list(range(4))
print(' ')
print(hash(id(lst3)))
print(hash(id(lst4)))
print(' =')
print(lst3==lst4)
print(' is')
print(lst3 is lst4)
4377943688
4377942472
=
True
is
False
lst1 = lst3
print('1 is 3')
print(lst1 is lst3)
print(' ')
print(hash(id(lst1)))
print(hash(id(lst3)))
print(' 1 ')
lst1[2] = 99
print('1 3 :')
print(lst1)
print(lst3)
print('1 is 3')
print(lst1 is lst3)
1 is 3
True
4377943688
4377943688
1
1 3 :
[0, 1, 99, 3]
[0, 1, 99, 3]
1 is 3
True
위 인쇄 작업을 함수 isequel로 봉하여 간단한 복사 대상의 앞뒤를 비교합니다.
lst3 = [1,[10,20],3]
print(' ')
lst4 = lst3.copy()
isequel(lst3,lst4)
print(' 3 ')
lst3[1][1] = 200
print('lst3=')
print(lst4)
print('lst4=')
print(lst4)
isequel(lst3,lst4)
결과:
4382428360
4382428104
=
True
is
False
3
lst3=
[1, [10, 200], 3]
lst4=
[1, [10, 200], 3]
4382428360
4382428104
=
True
is
False
얕게 복사한 후 두 대상은 is가 아니다. 하위 요소 중의 요소를 수정한 후에 변경을 따르면 주소만 복사한 것일 뿐이다.
딥 카피
copy 라이브러리 도입 필요print(' import copy')
lst4 = copy.deepcopy(lst3)
isequel(lst3,lst4)
print(' 3 ')
lst3[1][1] = 300
print('lst3=')
print(lst3)
print('lst4=')
print(lst4)
isequel(lst3,lst4)
결실 import copy
4515200136
4510722440
=
True
is
False
3
lst3=
[1, [10, 300], 3]
lst4=
[1, [10, 200], 3]
4515200136
4510722440
=
False
is
False
심층 복사는 사실 대상의 전체 구조를 복사하고 새로운 것을 만드는 것이기 때문에 네가 바꾸는 것은 나에게 영향을 주지 않는다.
= 딥 카피냐 얕은 카피냐. print('= :')
lst5 = lst4
isequel(lst4,lst5)
lst4[1][1] = 400
print('lst4=')
print(lst4)
print('lst5=')
print(lst5)
isequel(lst5,lst4)
결실= :
4390140616
4390140616
=
True
is
True
lst4=
[1, [10, 400], 3]
lst5=
[1, [10, 400], 3]
4390140616
4390140616
=
True
is
True
결과는'='가 얕은 복사라는 것을 증명했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
print(' import copy')
lst4 = copy.deepcopy(lst3)
isequel(lst3,lst4)
print(' 3 ')
lst3[1][1] = 300
print('lst3=')
print(lst3)
print('lst4=')
print(lst4)
isequel(lst3,lst4)
import copy
4515200136
4510722440
=
True
is
False
3
lst3=
[1, [10, 300], 3]
lst4=
[1, [10, 200], 3]
4515200136
4510722440
=
False
is
False
print('= :')
lst5 = lst4
isequel(lst4,lst5)
lst4[1][1] = 400
print('lst4=')
print(lst4)
print('lst5=')
print(lst5)
isequel(lst5,lst4)
결실
= :
4390140616
4390140616
=
True
is
True
lst4=
[1, [10, 400], 3]
lst5=
[1, [10, 400], 3]
4390140616
4390140616
=
True
is
True
결과는'='가 얕은 복사라는 것을 증명했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.