관리 메뉴

JIE0025

[Python] 얕은 복사, 깊은 복사 본문

기타 학습/Language

[Python] 얕은 복사, 깊은 복사

Kangjieun11 2022. 5. 28. 12:06
728x90

 

python 객체는 가변 객체와 불가변 객체로 분류할 수 있다.

list, set, dict, class : mutable(가변) 객체

bool, int, float, tuple, str :  immutable(불가변) 객체

 

 

가변객체의 경우 일반적인 대입 연산자를 통해 값 복사를 시도할 경우 얕은 복사가 된다.

 

얕은 복사

같은 메모리 주소를 가리키는 복사

이 경우 결과적으론 같은것을 가리키기 때문에 메모리에 들어있는 값이 바뀌면 동시에 값이 바뀐다. 

 

 

따라서 새로운 객체를 만들고 싶으면 import copy를 해준 다음, copy.deepcopy(복사할 대상) 을 사용해야한다.

 

깊은 복사

아예 새롭게 만드는 복사(내부 객체까지)

 

 

 

 

immutable 불가변 객체는

마찬가지로 대입 연산자를 사용할 경우 같은 메모리 주소를 갖긴 하지만, 

b에 다른 값을 대입할 떄 재할당을 통해 메모리 주소가 변경된다. 

 

 

 

그리고 문자열 같은 경우는 불가변객체라 중간에 인덱스로 값 변경이 불가함.

 

이러한 이유로 파이썬으로 코딩테스트 볼때 문자열 값 바꾸려면 리스트로 바꾸고 인덱스 접근했다가 다시 문자열로 바꿔줌 ㅎㅎ

 

'기타 학습 > Language' 카테고리의 다른 글

[ C++ ] 상속  (0) 2022.05.20
[ C++ ] sort , stable_sort  (0) 2022.05.20
[ C++ ] 삼각형의 성립 조건  (0) 2022.05.20
[ C++ ] 충돌 알고리즘  (0) 2022.05.20
[ C++ ] 문자열을 숫자로 (stoi, stof, stol, stod)  (0) 2022.05.19