Coding/Python Matlab

deepcopy

smores 2017. 10. 7. 00:03


https://www.python-course.eu/deep_copy.php



>>> from copy import deepcopy

>>>

>>> lst1 = ['a','b',['ab','ba']]

>>>

>>> lst2 = deepcopy(lst1)

>>>

>>> lst2[2][1] = "d"

>>> lst2[0] = "c";

>>>

>>> print lst2

['c', 'b', ['ab', 'd']]

>>> print lst1

['a', 'b', ['ab', 'ba']]

>>> lst3 = lst1[:]

>>> lst3

['a', 'b', ['ab', 'ba']]

>>> lst3[2][1]="d"

>>> lst3[0]="c"

>>> print lst3

['c', 'b', ['ab', 'd']]

>>> print lst1

['a', 'b', ['ab', 'd']]



일차원 어레이 형식의 list 에서는 [:] 으로 reference 가 아닌 실질적인 복사가 다 되는데, 리스트 안에 리스트가 원소로 중첩되는 경우 [:] 만으로는 내부 리스트의 내용을 다 복사하는 것이 아니라 그 리스트에 대한 reference 가 복사되는 상황이 되는 듯... 일반 원소들은 lst3 에서 바꾸어도 lst1 내용이 바뀌지 않지만 리스트 형식의 원소는 lst3 에서의 변화가 lst1 까지 영향을 미친다. 결국은 deepcopy 라는 명령어가 필요 !!!!

'Coding > Python Matlab' 카테고리의 다른 글

Anaconda on Win XP 32bit  (0) 2017.11.15
python 2 vs 3  (0) 2017.10.28
curve fitting, solidworks, LT  (1) 2017.09.23
python vs cpp speed test  (0) 2017.07.18
아나콘다, 선형회귀분석  (0) 2017.06.13