Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 중첩 리스트를 복사하는 3가지 방법

이 튜토리얼에서는 Python에서 중첩 리스트(nested list)를 복사하는 여러 가지 방법을 하나씩 살펴보겠습니다.

중첩 리스트는 리스트 안에 또 다른 리스트가 포함된 구조이기 때문에, 단순히 copy() 메서드나 슬라이싱으로 복사하면 내부 리스트는 여전히 원본과 참조를 공유하게 됩니다(얕은 복사). 따라서 내부 요소까지 완전히 독립적인 복사본을 만들려면 별도의 처리가 필요합니다.

1. 반복문을 사용한 복사

가장 기본적이고 널리 사용되는 방법은 반복문을 이용해 각 하위 리스트의 요소를 새로운 리스트에 하나씩 추가하는 것입니다.

예제

# 리스트 초기화
nested_list = [[1, 2], [3, 4], [5, 6, 7]]
# 빈 리스트 생성
copy = []
for sub_list in nested_list:
    # 임시 리스트
    temp = []
    # 하위 리스트 순회
    for element in sub_list:
        # temp 리스트에 요소 추가
        temp.append(element)
    # copy 리스트에 temp 리스트 추가
    copy.append(temp)
# 결과 출력
print(copy)

출력 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

[[1, 2], [3, 4], [5, 6, 7]]

2. 리스트 컴프리헨션과 언패킹 연산자 활용

반복문을 더 간결하게 표현하고 싶다면 리스트 컴프리헨션(list comprehension)과 언패킹 연산자(*)를 조합할 수 있습니다. 코드가 한 줄로 줄어들어 가독성이 크게 향상됩니다.

예제

# 리스트 초기화
nested_list = [[1, 2], [3, 4], [5, 6, 7]]
# 복사
copy = [[*sub_list] for sub_list in nested_list]
# 복사본 출력
print(copy)

출력 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

[[1, 2], [3, 4], [5, 6, 7]]

3. copy 모듈의 deepcopy() 활용

Python 표준 라이브러리인 copy 모듈에서 제공하는 deepcopy() 함수를 사용하면 중첩된 구조까지 완전히 복사할 수 있습니다. 이 방식은 깊은 복사(deep copy)라고 하며, 원본과 복사본이 서로 완전히 독립적이라는 점이 특징입니다.

예제

# copy 모듈 임포트
import copy
# 리스트 초기화
nested_list = [[1, 2], [3, 4], [5, 6, 7]]
# 복사
copy = copy.deepcopy(nested_list)
# 복사본 출력
print(copy)

출력 결과

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

[[1, 2], [3, 4], [5, 6, 7]]

마무리

지금까지 반복문, 리스트 컴프리헨션과 언패킹 연산자, 그리고 deepcopy()를 활용하는 세 가지 방법으로 중첩 리스트를 복사하는 방법을 알아보았습니다. 간단한 구조에는 리스트 컴프리헨션이, 깊이 중첩된 복잡한 구조에는 deepcopy()가 적합합니다. 튜토리얼에 대해 궁금한 점이 있다면 댓글로 남겨주세요.