copy.copy()、copy.deepcopy()、np.copy ()와python의 일반적인 등호의 차이
1443 단어 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.