>백엔드 개발 >파이썬 튜토리얼 >Python에서 목록을 올바르게 복제하고 예기치 않은 수정을 방지하는 방법은 무엇입니까?

Python에서 목록을 올바르게 복제하고 예기치 않은 수정을 방지하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-20 22:16:16134검색

How to Properly Clone Lists in Python and Avoid Unexpected Modifications?

복제된 목록: Python에서 무결성 유지

Python에서 기존 목록에 새 변수를 할당하면 얕은 복사본이 생성되므로 취약한 상태가 됩니다. 예상치 못한 목록 수정. 이 동작이 발생하는 이유를 밝히고 목록 불변성을 보장하기 위한 효과적인 복제 방법을 살펴보겠습니다.

할당이 복제로 이어지지 않는 이유:

new_list를 실행할 때 = my_list, new_list에 동일한 목록 개체에 대한 포인터를 할당합니다. 두 변수 모두 원본 목록을 참조하므로 후속 수정 사항이 new_list와 my_list 모두에 표시됩니다.

목록을 효과적으로 복사하려면:

진정한 복제본을 생성하려면 다음을 수행해야 합니다. 여러 가지 접근 방식:

1. list.copy() 사용:

Python 3.3에 도입된 이 메서드는 목록의 고유한 복사본을 생성합니다.

**2. [:]:**

로 목록을 분할하면 이 구문은 원본과 동일한 요소로 새 목록을 생성합니다.

3. 목록 생성자(list()) 사용:

다른 목록과 같은 기존 반복 가능 항목에서 새 목록을 만듭니다.

4. copy.copy() 사용:

이 내장 함수는 대부분의 사용 사례에 충분한 기본적인 얕은 복사본을 제공합니다.

5. copy.deepcopy() 사용:

이 보다 포괄적인 방법은 중첩된 객체도 복제되는 전체 복사본을 생성합니다.

예:

이러한 결과를 비교해 보겠습니다. 방법:

import copy

my_list = ['foo', 'bar']

new_list = my_list.copy()
sliced_list = my_list[:]
list_constructor_list = list(my_list)
shallow_copy_list = copy.copy(my_list)
deep_copy_list = copy.deepcopy(my_list)

my_list.append('baz')

print(f'Original list: {my_list}')
print(f'Copied list: {new_list}')
print(f'Sliced list: {sliced_list}')
print(f'List constructed from iterator: {list_constructor_list}')
print(f'Shallow copy: {shallow_copy_list}')
print(f'Deep copy: {deep_copy_list}')

출력:

Original list: ['foo', 'bar', 'baz']
Copied list: ['foo', 'bar']
Sliced list: ['foo', 'bar']
List constructed from iterator: ['foo', 'bar']
Shallow copy: ['foo', 'bar']
Deep copy: ['foo', 'bar']

출력에서 알 수 있듯이 my_list는 'baz'를 추가한 후 변경되지만 복제된 목록은 수정되지 않은 상태로 유지됩니다.

위 내용은 Python에서 목록을 올바르게 복제하고 예기치 않은 수정을 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.