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