ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 리스트 딥카피
    Base Line/python 기초 코드 2023. 8. 24. 17:13

    이썬 리스트에서 a=[] 이고 tmp=[1,2,3] 라고 할때 그냥 a.append(tmp)랑 a.append(tmp[:]) 라고 한다면

     

    1. a.append(tmp): 이 경우에는 리스트 a에 tmp 리스트 객체를 추가하는 것입니다. 즉, a 리스트 안에는 하나의 요소로서 tmp 리스트 전체가 들어가게 됩니다. 이후 tmp 리스트가 변경되면 a 리스트에 추가된 요소도 함께 변경될 수 있습니다. 이는 a 리스트가 tmp 리스트를 참조하고 있는 것입니다. 따라서 a[0] is tmp가 True일 것입니다.
    2. 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
Designed by Tistory.