본문 바로가기
BASIC

리스트의 할당과 복사 알아보기

by 자동매매 2023. 10. 9.

이번에는 리스트의 할당과 복사에 대해 알아보겠습니다. 할당과 복사는 비슷한 것 같지만 큰 차이점이 있습니다. 먼저 다음과 같이 리스트를 만든 뒤 다른 변수에 할당합니다.

>>> a = [0, 0, 0, 0, 0]
>>> b = a

b = a와 같이 리스트를 다른 변수에 할당하면 리스트는 두 개가 될 것 같지만 실제로는 리스트가 한 개입니다.

 그림 22-12 리스트를 다른 변수에 할당했을 때

a b is 연산자로 비교해보면 True가 나옵니다. 즉, 변수 이름만 다를 뿐 리스트 a b는 같은 객체입니다.

>>> a is b
True

a b는 같으므로 b[2] = 99와 같이 리스트 b의 요소를 변경하면 리스트 a b에 모두 반영됩니다.

>>> b[2] = 99
>>> a
[0, 0, 99, 0, 0]
>>> b
[0, 0, 99, 0, 0]
 그림 22-13 리스트를 할당한 뒤 b의 요소를 변경했을 때

리스트 a b를 완전히 두 개로 만들려면 copy 메서드로 모든 요소를 복사해야 합니다.

>>> a = [0, 0, 0, 0, 0]
>>> b = a.copy()

b = a.copy()와 같이 copy를 사용한 뒤 b에 할당해주면 리스트 a의 요소가 모두 b에 복사됩니다.

 그림 22-14 리스트를 복사했을 때

a b is 연산자로 비교해보면 False가 나옵니다. 즉, 두 리스트는 다른 객체입니다. 그러나 복사된 요소는 모두 같으므로 ==로 비교하면 True가 나옵니다.

>>> a is b
False
>>> a == b
True

이제 리스트 a b는 별개이므로 한쪽의 값을 변경해도 다른 리스트에 영향을 미치지 않습니다. 다음과 같이 리스트 b의 요소를 변경하면 리스트 a는 그대로이고 리스트 b만 바뀝니다.

>>> b[2] = 99
>>> a
[0, 0, 0, 0, 0]
>>> b
[0, 0, 99, 0, 0]
 그림 22-15 리스트를 복사한 뒤 b의 요소를 변경했을 때

'BASIC' 카테고리의 다른 글

리스트의 가장 작은 수, 가장 큰 수, 합계 구하기  (0) 2023.10.09
리스트 반복문  (1) 2023.10.09
리스트 method  (1) 2023.10.09
for 반복문 / while 반복문 / 무한Loop /break, continue  (1) 2023.10.02
조건문  (0) 2023.10.02

댓글