Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오류
- ubuntu
- 프로그래머스
- label
- C#
- pytorch
- C++
- Python
- C
- 채보
- 핑거스타일
- windows forms
- JSON
- Linux
- error
- OpenCV
- pandas
- YOLO
- VS Code
- mysql
- 명령어
- pip
- paramiko
- 기타 연주
- Numpy
- SSH
- Selenium
- Docker
- LIST
- Visual Studio
Archives
- Today
- Total
기계는 거짓말하지 않는다
Python 깊은 복사, 얕은 복사 (Shallow Copy, Deep Copy) 본문
Python의 list 복사를 예시로 들 수 있다.
얕은 복사(Shallow Copy)는 list 뿐 아니라 mutable 객체 모두 문제가 된다.
List 초기화
# 2차원 list 10행 5열 생성, 초기화
arr = [[0] * 5] * 10
print(arr)
겉보기엔 문제없어 보이지만 값을 변경하거나 추가할 경우 문제가 있다.
arr[0][0] = 100
print(arr)
arr[n][0]의 값이 모두 100이 된 것을 볼 수 있다.
위와 같은 방법은 같은 reference를 복사해오는 것이다.
# 2차원 List Comprehension 10행 5열 생성, 초기화
arr = [[0 for c in range(5)] for r in range(10)]
print(arr)
arr[0][0] = 100
print(arr)
위는 List Comprehension을 이용한 방법이다.
List Slicing
위의 예제와 비슷하다.
# 3차원 임의 list 생성
arr = [[[1, 2, 3, 4], [5, 6, 7, 8]]]
temp_arr = arr[0][1:3]
temp_arr[0][0] = 100
temp_arr[0][1] = 200
print(arr)
print(temp_arr)
Deep Copy
깊은 복사(Deep Copy)는 copy 모듈의 deepcopy method를 이용할 수 있다.
from copy import deepcopy
arr = [[[1, 2, 3, 4], [5, 6, 7, 8]]]
temp_arr = deepcopy(arr[0][1:3])
temp_arr[0][0] = 100
temp_arr[0][1] = 200
print(arr)
print(temp_arr)
'Python' 카테고리의 다른 글
Python pymysql cursor DB 값 변경 인식 불가 (0) | 2023.04.01 |
---|---|
Python SSH Client 원격 연결 (Paramiko) (0) | 2023.02.24 |
Python 객체 파일로 저장, 직렬화 (pickle) (0) | 2023.01.28 |
Python 변수 타입 선언 (0) | 2023.01.28 |
Python Pandas 다수 열의 조건 값 추출 (0) | 2023.01.21 |
Comments