파이썬 리스트를 다른 리스트에 복사하는 방법을 알아보겠습니다.
새로운 리스트 변수에 대입
새로운 리스트 변수를 선언하고 이전 리스트 변수를 새 리스트 변수에 할당해도 리스트를 복사할 수 있습니다. 그러나 이런 경우 새로운 리스트의 값을 변경하면 이전 리스트의 값도 변경되는 문제가 발생합니다. 이전 리스트와 새로운 리스트 변수가 같은 주소값을 가리키고 있기 때문입니다.
위 예제를 보면 list1을 선언하고 list2에 list1을 대입합니다. 그 후 list1과 list2를 프린트하면 동일한 값이 들어가 있음을 볼 수 있습니다. 다음으로 list2에 5의 값을 추가합니다. 그리고 list1과 list2를 출력해보면 list1과 list2 모두에 5의 값이 추가되었음을 볼 수 있습니다.
만약 함수의 인자로 리스트를 받고 함수 내에서 리스트에 값을 변경하면 함수를 호출한 부분에 있는 리스트의 값도 바뀌는데 함수를 호출한 부분에서는 바뀌지 않은 이전 리스트의 값을 사용하고 싶으면 리스트를 복사해야 합니다.
리스트를 복사하는 방법
리스트를 복사하면 대입하는 것과는 다르게 새로 선언한 리스트의 값을 바꾸어도 이전 리스트의 값이 바뀌지 않습니다.
위 예제를 보면 list1을 선언하고, list2에는 list1을 copy() 메소드를 이용하여 리스트를 복사합니다. 그런 후 list2에 5의 값을 추가해보면 list1에는 추가되지 않고 list2에만 추가되었음을 알 수 있습니다.
copy() 메소드 이외에 리스트를 복사하는 방법은 3가지가 더 있습니다.
1. 슬라이싱
list1 = [1,2,3,4]
list2 = list1[:]
시작 포인트와 끝 포인트를 생략하고 콜론(:)을 쓰면 리스트의 모든 요소라는 의미가 있습니다. 슬라이싱의 경우 리스트의 값을 복사한 새로운 리스트를 생성합니다.
2. list() 함수
list1 = [1,2,3,4]
list2 = list(list1)
list 함수는 리스트로 변환해주는 함수로 인자로 리스트를 넣어주면 새로운 리스트를 만들어줍니다.
3. 리스트 연산
list1 = [1,2,3,4]
list2 = [] + list1
[]로 빈 리스트를 생성한 후 list1을 빈 리스트에 넣어주는 형태로 구현 가능합니다.
4. copy() 메소드
list1 = [1,2,3,4]
list2 = list1.copy()
파이썬3 이상이면 copy() 메소드를 이용하여 리스트를 복사할 수 있습니다.
이상 파이썬에서 리스트를 복사하는 방법을 알아보았습니다.
Comment