Python 심화3 - 할당과 복사

do yeon kim·2022년 6월 8일
0

Python(심화)_fastcampus

목록 보기
3/24

할당과 복사

할당과 복사의 차이

파이썬에서는 데이터도 객체이다

리스트(딕셔너리) 할당과 복사

변수에 데이터가 저장된다. => 변수가 데이터를 가르킨다.

x = 200
y = 200

메모리상에서는
객체200이 있고
x가 200을 가르키고
y가 200을 가르킨다.


리스트할당방식

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

y = x

메모리상에서는

객체[1,2,3,4,5]
x가 [1,2,3,4,5]라는 객체를 가르키고 있다.
그런x를 y가 가르키므로
y도 [1,2,3,4,5]라는 객체를 가르키고 있다.

이때 만약 y[1]=100으로 값을 바꾸게 되면
객체자체가 변경되므로 [1,100,3,4,5]가 되고
x도 이를 가르키고 있으므로 값이 바뀌게 된다

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

y[0] = 0
print(x) 
print(y) 

[0, 2, 3, 4, 5]
[0, 2, 3, 4, 5]

리스트 복사 방식

x = [1,2,3,4,5]
y = x.copy()
메모리상에는
x가 가르키는 [1,2,3,4,5]객체
y가 가르키는 [1,2,3,4,5]객체가 각각 생긴다.

x = [1,2,3,4,5]
y = x.copy()

y[0] = 0
print(x) 
print(y) 

[1, 2, 3, 4, 5]
[0, 2, 3, 4, 5]

y값을 변경해도 x의 값은 변경되지 않는다.

다차원리스트(중첩) 복사 방식

중첩리스트의 복사방법

import copy
x = [[1,2],[3,4]]
y = copy.deepcopy(x)

y[0][1] = 5
y[1][1] = 10
print(x)
print(y)

[[1, 2], [3, 4]]
[[1, 5], [3, 10]]

중첩리스트의 경우 copy모듈을 import해주어야한다.
y값을 변경해도 x의 값은 변경되지 않는다.


https://fastcampus.co.kr/dev_online_pyweb

0개의 댓글