본문 바로가기
파이썬/자주하는 질문

파이썬(Python) 리스트 복사하기

by J-Build 2020. 9. 9.

파이썬(Python)으로 코딩할 때 가끔씩 리스트를 복사할 일이 생깁니다. 하지만 주의하지 않으면 오류를 만들어 디버깅을 힘들게 할 수 도 있습니다. 즉, 아래와 같이 새로운 리스트에 기존 리스트를 할당해 버리면 실제로 복사가 일어나지 않고 새로운 리스트는 기존 리스트를 참조하게 됩니다. 그래서 기존 리스트의 값을 변경해주면 새로운 리스트의 값 역시 바뀌게 되죠.

old_list = [0, 1, 2, 3]
new_list = old_list
print(new_list)
# [0, 1, 2, 3]

old_list[0] = 10
print(new_list)
# [10, 1, 2, 3]

 

실제로 독립된 두개의 리스트를 갖기 위해서는 아래와 같은 방법들로 가능합니다. 

 

먼저, 제가 선호하는 방법인 슬라이싱으로 복사하는 것입니다. 슬라이싱의 다양한 사용법을 알고 싶다면 '파이썬 슬라이싱 이해하기' 포스팅을 참고하세요. 

new_list = old_list[:]

 

파이썬 내장(builtin) 함수인 list.copy() 함수를 사용하는 방법도 있습니다. 

new_list = old_list.copy()

 

또다른 내장 함수인 list() 도 사용가능 하구요. 

new_list = list(old_list)

 

파이썬의 copy 모듈을 사용해서 리스트를 복사할 수 도 있습니다. 하지만 속도는 다른방법에 비해서 느린편입니다. 

import copy

# copy.copy() 함수를 사용할 수도 있고
new_list = copy.copy(old_list)

# copy.deepcopy() 함수를 사용해도 됩니다. 
new_list = copy.deepcopy(old_list)

 

 

댓글