Python 할당과 복사 기본개념

2022-03-19

.

Python_studynote(20220319)

[학습자료]

패스트 캠퍼스 “초격차 패키지 : 한 번에 끝내는 파이썬 웹 개발” 강의를 공부하고 정리한 내용입니다.

** URL : https://fastcampus.co.kr/dev_online_pyweb

[학습내용]

  • 파이썬의 변수 저장방식

예를 들어서 아래와 같이 변수를 할당한다고 했을때 변수들이 메모리에 저장되는 방식은 어떻게 될까

x = 200

y = 200

변수에 데이터가 저장된다(X)

0

변수가 데이터를 가리킨다.(ㅇ)

1

  • 리스트 할당방식
ex)

x = [1,2,3,4,5]

y = x

2

리스트 할당방식 실제코드 예시

x = [1,2,3,4,5]
y = x
y[2] = 0
print(x)
print(y)
print(id(x))
print(id(y))

하나의 객체를 x와 y변수가 같이 바라보고 있기 때문에 y[2] = 0를 해주면 x도 바뀌게 된다.

[1, 2, 0, 4, 5]
[1, 2, 0, 4, 5]
4351299008
4351299008
  • 그러면 리스트를 별도로 복사하고 싶으면 어떻게 해야하냐

copy라는 메소드를 이용해서 복사하면 된다.

ex)

x = [1,2,3,4,5]

y = x.copy()

3

리스트 복사 실제코드 예시

a = [5,6,7,8,9]
b = a.copy()
b[2] = 0
print(a)
print(b)
print(id(a))
print(id(b))

copy 메소드를 이용해서 객체를 할당하면 a와 b가 바라보는 객체의 공간이 다르게 되기 때문에 b에서 데이터를 바꿔도 a는 별개의 공간이기 때문에 영향을 받지 않는다.

[5, 6, 7, 8, 9]
[5, 6, 0, 8, 9]
4351300672
4351300800
  • 다차원 리스트를 복사하려면 어떻게 해야 하냐

다차원 리스트는 copy 메소드로는 복사가 안되고 deepcopy 라는 메소드를 사용해야 한다.

ex)

import copy

x = [[1,2],[3,4,5]]

y = x.deepcopy()

4

중첩 리스트에서 copy 방법 예시

import copy
c = [[1,2], [3,4,5]]
d = copy.deepcopy(c)
d[0][0] = 0
print(c)
print(d)
[[1, 2], [3, 4, 5]]
[[0, 2], [3, 4, 5]]