티스토리 뷰
(객체의)복사(copy)란?
복사는 행렬을 다룰 때 리스트 자료형을 복사하는 경우에 적용되는 개념
파이썬에서의 객체는 객체를 복사하는 방법에 따라 2가지로 나눕니다.
mutable 객체와 immutable 객체이죠.
mutable 객체는 리스트 처럼 변경 가능한 객체이고, immutable 객체는 숫자, 문자처럼 변경불가능한 객체입니다.
immutable 객체인 숫자형에서 변수 a에 어떤 값을 넣고 변수 b와 같다고 하면 같은 메모리 주소에 저장되고, b값을 바꾸면 a와 b의 메모리 주소는 달라집니다.
mutable 객체인 리스트에서는 (리스트는 [1,2,3,4] 이런 것입니다) 에서는 기본적으로 리스트의 주소는 안 바뀌고 리스트의 원소값은 다른 메모리 주소를 가집니다. 만약 원소를 바꾸면 메모리 주소도 바뀌고, 서로 a=b처럼 같은 값을 할당하면
a를 바꾸면 b도 동일하게 바뀝니다.
얇은 복사(shallow copy)
앞에서 mutable한 객체는 같은 값으로 할당하면 서로 변화시킬 때 영향을 주었죠? 그래서 나온 것이 바로 얇은 복사에요.
자세히 말하면 mutable한 객체에 immutable한 객체가 포함될 경우에 많이 쓰여요. 이 말이 어려울 수 있는데
리스트를 생각하면 편해요. [1,2,3,4,5]를 보면 리스트는 mutable이고 원소는 숫자니깐 immutable이죠?
만약 리스트 a가 있다고 가정하면 a를 얇은 복사한 것을 b라고 하면 a와 b의 메모리 주소는 달라요. 하지만 a[0],b[0]의 원소는 같은 메모리 주소를 가지죠. 하지만 a의 원소를 바꾸면, b의 원소가 바뀌지 않고 다른 메모리 값에 저장이 되요.
깊은 복사 (deep copy)
깊은 복사는 mutable한 객체에 mutable한 원소를 구성할 때 사용되요.
이 경우에 리스트 안에 또 리스트 원소가 있는 경우에요. 만약 리스트 a와 b가 있다고 하면 리스트 a와 b주소는 다르지만
a[0],b[0]의 주소는 같게 되고, a[0][0], b[0][0]의 주소도 같게 되요. 그리고 b를 바꾸면 a도 똑같이 바뀌게 되요. 그렇다 보면
서로 영향을 주죠? 영향을 주지 않도록 하는 것이 깊은 복사에요. !
저도 공부하는 과정이라 어렵긴 한데 도움이 되셨으면 좋겠어요.
한번 정리해 볼까요?
객체는 mutable과 immutable 객체가 있다.
mutable안에 immutable이 들어가 있는 경우 복사는 하면 서로 영향을 주게 된다. 그럴 때 사용하는 것이 얇은 복사이다.
예) [1,2,3,4,5] 같은 리스트
mutable안에 mutable이 있는 들어 있는 경우 복사를 하면 서로 영향을 주게 된다. 그럴 때 사용하는 것이 깊은 복사이다.
예) [[1,2],[3,4]] 같은 리스트 안에 리스트가 포함된 경우
- Total
- Today
- Yesterday
- 논리적데이터독립성
- 데이터베이스 구성요소
- 제어기능
- 개체무결성
- 데이터독립성
- DBMS역할
- 데이터베이스특징
- 엑셀
- 얇은 복사
- 데이터베이스구축목적
- 데이터과학
- 이산형데이터
- DBMS단점
- 순서형데이터
- 명목형데이터
- 데이터 정의어
- DBMS종류
- 데이터 통제어
- 데이터베이스스키마
- 정의기능
- CLEAN함수
- 데이터베이스구조
- 조작기능
- 데이터베이스
- 연속형데이터
- DBMS특징
- 의미무결성
- 물리적데이터독립성
- 참조무결성
- 연산자우선순위
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |