>백엔드 개발 >파이썬 튜토리얼 >'for' 루프 내에서 Python 목록을 직접 수정할 수 없는 이유는 무엇입니까?

'for' 루프 내에서 Python 목록을 직접 수정할 수 없는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-28 01:49:09408검색

Why Can't I Modify a Python List Directly Within a `for` Loop?

Python 목록 수정 수수께끼

for 루프를 사용하여 Python에서 목록을 탐색할 때 사용자는 목록 이해를 사용하지 않고 해당 요소를 변경할 수 없는 예상치 못한 상황에 직면할 수 있습니다.

왜 접근이 불가능한가?

문제의 핵심 for i in li 루프 구성의 동작에 있습니다. 내부적으로는 다음과 같이 반복됩니다.

for idx in range(len(li)):
    i = li[idx]
    i = 'foo'

보다시피 i에는 처음에 목록의 요소에 대한 참조가 할당됩니다. i에 대한 후속 수정은 목록 항목 자체가 아닌 지역 변수에만 영향을 미칩니다.

딜레마 해결

이 문제를 해결하려면 다음 중 하나의 목록 이해 기능을 활용할 수 있습니다.

li = ["foo" for i in li]

또는 명시적으로 인덱스를 순회합니다.

for idx in range(len(li)):
    li[idx] = 'foo'

또는, 열거형을 사용하여 프로세스를 단순화할 수 있습니다.

for idx, item in enumerate(li):
    li[idx] = 'foo'

위 내용은 'for' 루프 내에서 Python 목록을 직접 수정할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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