파이썬 | 리스트의 할당과 복사

CHOI·2021년 10월 30일
0

Python

목록 보기
14/33
post-thumbnail

이번에는 리스트의 할당과 복사에 대해서 알아보자 이 둘은 비슷한 것 같지만 큰 차이점이 존재한다. 먼저 다음 코드를 보자

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

리스트를 만든 다음에 다른 변수에 할당하였다. 이렇게 다른 변수에 할당하면 리스트는 두 개가 될 것 같지만 실제로 리스트는 한 개이다.

Untitled

>>> a is b
True

abis 연산자로 비교해보면 True 가 나온다. 즉, 변수 이름만 다를 뿐 두 변수는 같은 객체이다.

ab 가 같으므로 b[2] = 99 과 같이 b 의 요소를 변경하면 리스트 a, b 모두 반영이 된다.

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

Untitled

리스트 복사하기 ( copy )

실제로 두 개의 리스트를 만들기 위해서는 copy 메서드를 사용해야한다.

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

위 코드와 같이 copy 를 한 뒤에 b 에 할당한다 그러면 b 리스트에는 a 리스트의 모든 요소가 복사된다.

Untitled

그렇게 되면 요소는 같지만 서로 다른 리스트가 두 개 생긴다.

실제로 abis 연산자로 비교해보면 False 가 나온다. 즉, 두 리스트는 다른 객체이다. 그러나 복사된 요소들은 모두 같으므로 == 연산자로 비교하면 True 가 나온다.

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

이제 a 리스트와 b 리스트는 서로 별개이므로 한쪽의 값을 변경해도 다른 쪽에서는 어떠한 영향도 끼치지 않는다.

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

Untitled

profile
벨로그보단 티스토리를 사용합니다! https://flight-developer-stroy.tistory.com/

0개의 댓글