-
리스트 딥카피Base Line/python 기초 코드 2023. 8. 24. 17:13
이썬 리스트에서 a=[] 이고 tmp=[1,2,3] 라고 할때 그냥 a.append(tmp)랑 a.append(tmp[:]) 라고 한다면
- a.append(tmp): 이 경우에는 리스트 a에 tmp 리스트 객체를 추가하는 것입니다. 즉, a 리스트 안에는 하나의 요소로서 tmp 리스트 전체가 들어가게 됩니다. 이후 tmp 리스트가 변경되면 a 리스트에 추가된 요소도 함께 변경될 수 있습니다. 이는 a 리스트가 tmp 리스트를 참조하고 있는 것입니다. 따라서 a[0] is tmp가 True일 것입니다.
- a.append(tmp[:]): 이 경우에는 tmp 리스트의 내용을 슬라이싱하여 새로운 리스트 객체를 생성한 후, 이를 a 리스트에 추가합니다. 이렇게 하면 a 리스트와 tmp 리스트는 완전히 별개의 객체가 되며, tmp 리스트의 변경이 a 리스트에 영향을 미치지 않습니다. 즉, a[0]은 tmp 리스트와 동일한 내용을 가진 새로운 리스트 객체입니다. 따라서 a[0] is tmp가 False일 것입니다.
요약하자면, a.append(tmp)는 tmp 리스트의 참조를 추가하는 것이며, a.append(tmp[:])는 tmp 리스트의 내용을 복사하여 새로운 리스트를 추가하는 것입니다.
'Base Line > python 기초 코드' 카테고리의 다른 글
sobel, canny, laplacian filter (1) 2022.12.03 Genetic Algorithm(feature selection) + LightGBM (0) 2022.08.25 Auto encoder (0) 2022.08.23 sklearn 회귀관련 모델 정리 (0) 2022.08.16 torch check list (0) 2022.08.14