Python에서 불변 중첩 목록 생성
Python에서 데이터 구조를 복사하는 것은 까다로울 수 있으며, 특히 중첩 목록을 처리할 때 더욱 그렇습니다. [:]를 사용하는 얕은 복사본은 중첩된 요소에 대한 참조를 유지하여 원하지 않는 수정을 유발합니다.
이 문제를 해결하려면 중첩 목록의 복사본을 생성할 때 다음 기술을 고려하십시오.
1차원 목록의 경우 [:] 연산자는 메모리의 동일한 요소를 참조하는 얕은 복사본을 만듭니다. 복사본을 수정해도 원본에는 영향이 없습니다.
a = [1, 2] b = a[:] b[0] = 3 # Modifies b, but a remains unchanged
중첩 목록의 경우 슬라이싱만으로는 충분하지 않습니다. 딥 카피. 새 목록을 생성하는 동안 중첩된 요소는 여전히 원본에 대한 참조입니다.
a = [[1, 2], [3, 4]] b = a[:] # Shallow copy b[0][0] = 5 # Modifies b and a
copy.deepcopy() 함수는 진정한 딥 카피를 생성하여 중첩 목록의 모든 수준에 대해 새로운 객체를 재귀적으로 생성합니다. 복사본에 대한 변경 사항은 원본에 영향을 주지 않습니다.
import copy b = copy.deepcopy(a) b[0][0] = 6 # Modifies b, but a remains untouched
이러한 기술을 사용하면 격리 기능을 제공하는 변경 불가능한 중첩 목록을 생성하여 원본 데이터 구조가 예기치 않게 수정되는 것을 방지할 수 있습니다.
위 내용은 Python에서 정말로 불변의 중첩 목록을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!