반응형
20221217_파이썬 복사, 깊은 복사 copy() deepcopy()¶
1 차원 데이터¶
In [1]:
a = [1, 2, 3]
b = a
print(a)
print(b)
[1, 2, 3] [1, 2, 3]
In [2]:
b.append(4)
print(a)
print(b)
[1, 2, 3, 4] [1, 2, 3, 4]
- a 를 b 로 복사한 후 b 에 a 와 다른 내용을 추가하고 싶은 목적이라면 위와 같이 코드를 작성해서는 안됩니다.
- 위 목적을 만족 시키기 위해서 아래 코드와 같이
copy()
함수를 사용합니다
In [3]:
a = [1, 2, 3]
b = a.copy()
print(a)
print(b)
[1, 2, 3] [1, 2, 3]
In [4]:
b.append(4)
print(a)
print(b)
[1, 2, 3] [1, 2, 3, 4]
다차원 데이터¶
In [5]:
a = [[1,2], [3,4]]
b = a.copy()
print(a)
print(b)
[[1, 2], [3, 4]] [[1, 2], [3, 4]]
In [6]:
b.append([5,6])
print(a)
print(b)
[[1, 2], [3, 4]] [[1, 2], [3, 4], [5, 6]]
In [7]:
b[0][0] = 10
In [8]:
print(a)
print(b)
[[10, 2], [3, 4]] [[10, 2], [3, 4], [5, 6]]
copy()
함수를 활용하면, b 의 1 차원 값 추가에 따른 변화는 b에만 발생합니다.- 하지만 2차원 값을 변화 할 때 a,b 변수 모두 같이 변하는 것을 볼 수 있습니다.(b[0][0] = 10) [얕은 복사]
- 다차원 값을 활용하면서 b 변수에만 새로운 내용을 추가하고 싶다면, 아래 코드와 같이 copy 패키지에 deepcopy 함수를 사용 합니다. [깊은 복사]
In [9]:
a = [[1,2], [3,4]]
In [10]:
import copy
b = copy.deepcopy(a)
print(a)
print(b)
[[1, 2], [3, 4]] [[1, 2], [3, 4]]
In [11]:
b[0][0] = 10
print(a)
print(b)
[[1, 2], [3, 4]] [[10, 2], [3, 4]]
반응형
'python' 카테고리의 다른 글
파이토치 view 텐서 차원 변경 (torch.view, shape 변경) (0) | 2022.12.18 |
---|---|
판다스를 활용한 one-hot, 더미 컬럼 만들기 (pandas.get_dummies one-hot encoding) (0) | 2022.12.18 |
파이썬 한국 휴일(holidays) 표시하기 (pytimekr) (2) | 2022.12.17 |
[넘파이] axis 옵션 활용한 argmax 함수 사용, 최대값 위치 (0) | 2022.12.16 |
파이썬 아이리스(load_iris) 데이터 불러오기 sklearn.datasets (0) | 2022.12.15 |
댓글