>  기사  >  백엔드 개발  >  Python에서 \'vec\'를 수정하면 \'v\'도 변경되는 이유는 무엇입니까?

Python에서 \'vec\'를 수정하면 \'v\'도 변경되는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-03 04:08:31166검색

Why Does Modifying 'vec' Also Change 'v' in Python?

목록 및 참조: Python의 변수 할당 이해

Python에서 목록을 참조하는 변수는 예기치 않은 동작을 나타낼 수 있습니다. 다음 코드를 살펴보세요.

<code class="python">v = [0] * 9
vec = v  # Assign v's address to vec
vec[5] = 5  # Modify vec at index 5
print(v)  # Also prints [0, 0, 0, 0, 0, 5, 0, 0, 0]</code>

놀랍게도 'v'를 인쇄하면 코드도 수정되었음을 알 수 있습니다. 이 동작은 처음에는 혼란스러울 수 있습니다.

'v'가 변경되는 이유

'v'가 변경되는 이유는 vec와 v가 모두 참조이기 때문입니다. vec = v를 할당하면 새 목록이 생성되지 않습니다. 대신 메모리 포인터인 v의 주소를 vec에 할당하기만 하면 됩니다.

결과적으로 vec와 v는 모두 메모리의 동일한 목록을 가리킵니다. 두 변수 중 하나를 변경하면 기본 목록에 영향을 미치므로 'vec'가 수정되면 'v'도 변경됩니다.

별도 목록 만들기

만들려면 두 개의 개별 목록을 사용하려면 얕은 복사를 수행해야 합니다.

<code class="python">vec = list(v)</code>

이렇게 하면 'v'와 동일한 값을 가진 새 목록이 생성되지만 다른 메모리 위치에 저장됩니다. 이제 'vec'를 수정해도 'v'에는 영향을 미치지 않습니다.

위 내용은 Python에서 \'vec\'를 수정하면 \'v\'도 변경되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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