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
- 보험
- 가입
- 파이썬
- 추가납입
- 프로그래밍
- 중도인출
- 사망
- javascript
- Vue.js
- 수수료
- 보험료
- 변환
- 문자열
- 프론트엔드
- 코딩
- 급성심근경색증
- 리스트
- jQuery
- 자바스크립트
- PythonProgramming
- Java
- 인출수수료
- python
- 교보
- 심장질환
- 납입
- 웹개발
- 특약
- 교보생명
- 뇌출혈
Archives
- Today
- Total
SeouliteLab
[Python/파이썬] 리스트 복사: Deep Copy vs Shallow Copy 본문
리스트 복사는 Python 프로그래밍에서 매우 중요한 작업 중 하나입니다. 특히, 복사를 할 때에는 Deep Copy와 Shallow Copy의 개념을 이해하는 것이 중요합니다. 이번 글에서는 Deep Copy와 Shallow Copy의 개념을 설명하고, 각각의 예제를 통해 이를 살펴보겠습니다.
1. Shallow Copy
Shallow Copy는 복사된 객체가 원본 객체의 참조를 공유하는 것을 의미합니다. 이는 새로운 객체를 생성하지만, 내부의 객체는 동일한 객체를 참조합니다.
import copy
original_list = [[1, 2, 3], [4, 5, 6]]
shallow_copy = copy.copy(original_list)
# 변경 전
print(original_list) # 출력 결과: [[1, 2, 3], [4, 5, 6]]
print(shallow_copy) # 출력 결과: [[1, 2, 3], [4, 5, 6]]
# 내부 객체 변경
original_list[0][0] = 100
# 변경 후
print(original_list) # 출력 결과: [[100, 2, 3], [4, 5, 6]]
print(shallow_copy) # 출력 결과: [[100, 2, 3], [4, 5, 6]]
2. Deep Copy
Deep Copy는 원본 객체와 복사된 객체가 완전히 독립적인 복사본을 가지는 것을 의미합니다. 내부 객체까지 재귀적으로 복사됩니다.
import copy
original_list = [[1, 2, 3], [4, 5, 6]]
deep_copy = copy.deepcopy(original_list)
# 변경 전
print(original_list) # 출력 결과: [[1, 2, 3], [4, 5, 6]]
print(deep_copy) # 출력 결과: [[1, 2, 3], [4, 5, 6]]
# 내부 객체 변경
original_list[0][0] = 100
# 변경 후
print(original_list) # 출력 결과: [[100, 2, 3], [4, 5, 6]]
print(deep_copy) # 출력 결과: [[1, 2, 3], [4, 5, 6]]
3. 주의사항
Shallow Copy와 Deep Copy를 사용할 때는 내부 객체까지 어떻게 처리되는지 주의해야 합니다. 복사된 객체가 원본 객체의 참조를 공유할 수 있는지 여부를 확인해야 합니다.
# 주의사항 예제
original_list = [[1, 2, 3], [4, 5, 6]]
shallow_copy = copy.copy(original_list)
original_list.append([7, 8, 9])
print(original_list) # 출력 결과: [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(shallow_copy) # 출력 결과: [[1, 2, 3], [4, 5, 6]]
Python에서 리스트 복사를 다룰 때는 Shallow Copy와 Deep Copy의 개념을 잘 숙지해야 합니다. 각각의 상황에 맞게 적절한 방법을 선택하여 사용해야 합니다.
'프로그래밍' 카테고리의 다른 글
[Python/파이썬] 객체 리스트 정렬하기 (0) | 2024.03.02 |
---|---|
[Python/파이썬] 리스트 역순으로 순회하기 (0) | 2024.03.02 |
[Python/파이썬] 싱글턴(Singleton) 패턴: 다양한 방법으로 구현하기 (0) | 2024.03.02 |
[Python/파이썬] 가상환경 구성 및 설정: venv 활용하기 (0) | 2024.03.02 |
[Python/파이썬] 명령행 인자 받기: argparse 모듈 활용하기 (0) | 2024.03.02 |