>  기사  >  백엔드 개발  >  Python에서 하나의 중첩 목록을 수정하면 다른 목록에 영향을 미치는 이유는 무엇입니까?

Python에서 하나의 중첩 목록을 수정하면 다른 목록에 영향을 미치는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-01 05:18:02796검색

Why Do Modifications to One Nested List Affect Others in Python?

중첩 목록 인덱스 문제 해결

Python에서 중첩 목록을 처리할 때 목록이 전달되는 방식을 이해하는 것이 중요합니다. "참조 전달"로. 일반적으로 변수는 값을 독립적으로 유지하지만("값에 의한 전달") 효율성상의 이유로 목록은 메모리 주소에 의해 전달됩니다("참조에 의한 전달").

예를 들어, 4 * [0] , 메모리의 동일한 0 값에 대한 4개의 포인터를 만듭니다. 그러나 이러한 목록 중 하나를 수정하면 변경 사항이 다른 모든 목록에 전파됩니다. 이는 모두 동일한 기본 메모리 위치를 가리키기 때문입니다.

귀하의 예에는 4 [(4 [0])]가 있습니다. 이는 내부 메모리의 4개 복사본을 생성한다는 의미입니다. 4개의 0이 포함된 목록입니다. 루프에서 some_listi 1을 수정하면 실제로 해당 메모리 위치의 기본 목록이 수정되어 4개의 목록이 모두 영향을 받게 됩니다.

이 문제를 해결하려면 두 번째 곱셈을 피하고 루프를 사용하여 새 목록을 생성하세요. 목록 목록:

<code class="python">some_list = [(4 * [0]) for _ in range(4)]</code>

이렇게 하면 각각 4개의 0이 포함된 4개의 고유한 목록이 생성되어 여러 목록이 예기치 않게 수정되는 것을 방지할 수 있습니다.

위 내용은 Python에서 하나의 중첩 목록을 수정하면 다른 목록에 영향을 미치는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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