#연구/#Python

[파이썬/Python] 파이썬 리스트 복사 시 주의할 점 #파이썬 리스트의 특징 #referential nature of the python list #리스트 복사 #copy()

every7hing 2020. 12. 15. 20:32
반응형

 

[파이썬/Python] 파이썬 리스트 복사 시 주의할 점 

#파이썬 리스트의 특징 

#referential nature of the python list

 

 

파이썬에서는 리스트와 튜플이 존재한다. 그 중에서도 리스트는 가변적인 성격을 가진다.

리스트를 사용할 때, 복사하기 위해 단순 대입하는 경우가 많다. 하지만 이런 경우, 아래와 같은 오류가 생기기 마련이다. 이것으로 고생한 경험이 있는 분들은 아마 공감할 내용이므로, 다음과 같은 실수를 반복하지 말자.

 

 

먼저, 아래와 같은 코드가 있다고 가정하자. 리스트 X를 Y에 대입하고, Y의 원소를 3으로 변경한다. 그리고는 X, Y리스트 둘다 값을 출력해보자.

X = [1, 2]

Y = X
Y[0] = 3

print(X)
print(Y)

 

어떤 일이 일어났는가? Y 리스트의 첫 번째 원소를 3으로 변경하였지만, X 리스트의 첫 번째 원소도 3으로 같이 바뀌었다. 이것이 바로 파이썬 리스트의 referential nature 때문이다.

[3, 2]
[3, 2]

 

이것을 모른채 실컷 코딩한 후, 나중에 X 리스트에서 원래의 값을 찾으려면 백날 찾아도 찾을 수 없다. 따라서, 기본적으로 리스트를 복사하기 위해서는 아래와 같이 하는 것이 안전하다.

X = [1, 2]

Y = X.copy()
Y[0] = 3

print(X)
print(Y)

 

 

copy() 함수를 써서 한 결과는, 위와는 전혀 다르다. 원래의 X 리스트 값이 보존되었다.

[1, 2]
[3, 2]

 

단순하지만, 꼭 알아둬야할 파이썬 리스트의 특징이다.

반응형