참조 vs 복사

파이썬의 변수는 기본적으로 = 연산시 '참조' 방식으로 작동한다.

>>> a_list = [2, 5, 10]
>>> b_list = a_list
>>> b_list.appentd(100)
>>> b_list.appentd(200)
>>> a_list	# a_list 와 b_list는 동일객체이다
	[2, 5, 10, 100, 200]

 

만약 리스트를 '복사' 하고 싶은 경우 항목 간 복사를 사용

>>> my_list = [1, 10, 5]
>>> yr_list = my_list[:]

 

얕은복사 vs 깊은복사

>>> a_list = [1, 10, [2, 3]]
>>> b_list = a_list[:]	# 항목 간(member-by-member) 복사

>>> b_list[0] = 0
>>> b_list[1] = 0
>>> b_list[2][0] = 0
>>> b_list[2][1] = 0

>>> print(a_list)
	[1, 10, [0, 0]]		# b_list의 변경내용이 적용됨
    					# a_list 항목 간 복사시 a_list[2]는 리스트라 참조복사된 것

# 깊은복사
>>> import copy		# copy 패키지 import
>>> a_list = [1, 10, [2, 3]]
>>> b_list = copy.deepcopy(a_list)	# 이렇게 하면 모든 항목이 값으로 복사된다

 

'Python > 공통이론' 카테고리의 다른 글

Python - push pop 구현  (0) 2023.04.06
Python - enumerate 함수  (0) 2023.04.04
Python - 문자열 - 불리언 메서드  (0) 2023.03.29
Python - 진수 변환  (0) 2023.03.29
Python - 문자열 - 관련함수2  (0) 2023.03.29

+ Recent posts