copy.copy()、copy.deepcopy()、np.copy ()와python의 일반적인 등호의 차이

1443 단어 python
python에서 대상 부여 값은 사실상 대상의 인용입니다.대상을 만들고 다른 변수에 부여할 때,python은 이 대상을 복사하지 않고, 이 대상의 인용만 복사했다
(1) 초기 변수를 바꾸면 일반적인 등호는 관련 변수에 똑같은 변화를 일으킨다(이것은 인용의 특성 때문에 이전에 파이톤의 이 특성을 눈치채지 못했기 때문이다)
직접 부착된 코드는 이해하기 쉬울 것입니다.
a = [1, 2, 3]
>>> b = a
>>> a
[1, 2, 3]
>>> b
[1, 2, 3]
>>> a[0] = 4
>>> a
[4, 2, 3]
>>> b
[4, 2, 3] #  python 

(2)copy 얕은 복사, 여기서 얕은 복사는 삽입 부분에 비해 얕은 것을 가리키고, 삽입 부분은 하위 대상을 가리키며, 하위 대상을 복사하지 않았기 때문에 원시 데이터가 바뀌면 하위 대상이 바뀐다.
import copy
a = [1, 2, ['a']]
>>> c = copy.copy(a)
>>> a
[1, 2, ['a']]
>>> c
[1, 2, ['a']]
>>> a[2].append('b')
>>> a
[1, 2, ['a', 'b']]
>>> c
[1, 2, ['a', 'b']] #  , , 
>>> a.append(3)
>>> a
[1, 2, ['a', 'b'], 3]
>>> c
[1, 2, ['a', 'b']] #  ‘ ’ , 

(3) 깊이 복사, 대상에 포함된 모든 삽입 부분의 복사를 포함하기 때문에 원시 대상의 변화는 베리의 어떤 하위 요소도 깊이 복사하지 않는다.
import copy
a = [1, 2, ['a']]
>>> c = copy.deepcopy(a)
>>> a
[1, 2, ['a']]
>>> c
[1, 2, ['a']]
>>> a[2].append('b')
>>> a
[1, 2, ['a', 'b']]
>>> c
[1, 2, ['a']] #  , , 

주의 사항:


numpy 안의 등호는 인용 (numpy 대상을 먼저 만들기) 이고, 깊이 복사는np입니다.copy.

좋은 웹페이지 즐겨찾기