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 |