<얕은복사(shallow copy)>
a = [1,3,5]
b = a
print(b)
#[1,2,3]
#잘 복사가 된듯
a.append(7)
print(b)
#[1,3,5,7]
#배열a에 추가했는데 왜 배열b에 추가가 된것이여? 이게 머선일이고?
우리가 가끔 코딩테스트를 연습하다보면 만나는 실수다.
얕은복사를 했기 때문에 의도와 다른 저런 참사가 난다.
얕은복사를 할 경우 a,b의 두 변수는 같은 주소를 참조하고있기 때문이다.
독립적으로 사용하기위한 복사를 하려면 깊은복사를 해줘야한다
<깊은복사(deep copy)>
import copy
a = [1,3,5]
b = copy.deepcopy(a)
a.append(7)
print(b)
#[1,3,5]
#이젠 온전하게 b가 출력된다!
좀 귀찮지만 copy를 import해서 사용해야한다.
이젠 변수 a,b 를 독립적으로 사용할 수있다.
하지만 위의 방법은 막상 갑작스럽게 사용하려면 머리속에서 지워졌을 확률 97%
<야매깊은복사>
a = [1,3,5]
b = []
for i in a:
b.append(i)
a.append(7)
print(b)
#[1,3,5]
#이지하구만
잘 된다.
우리가 잘 아는 for 문으로 그냥 일일히 넣어서 복사해주면된다.
deep copy방법 까먹었다고 import copy한다음 어? 나 까먹었다 이문제 못풀겠는데? 하지말고
이런식이라도 꾸역꾸역 해결하는 방법이있으니 포기하지 마시길.
'Python' 카테고리의 다른 글
[Python] input 입력받는 수 많은 방법(map, split) (0) | 2024.06.25 |
---|---|
[Python] 파이썬 eval 함수 설명 및 예제 (0) | 2023.06.22 |