함수 내 목록 수정
함수 내 목록으로 작업할 때는 참조 및 값 할당의 개념을 이해하는 것이 중요합니다. Python에서 함수에 전달된 목록 매개변수는 복사본이 아닌 원본 목록에 대한 참조를 받습니다. 함수 내부의 목록을 직접 수정하면 원래 목록이 변경됩니다.
문제 그림
다음 코드를 고려하세요.
<code class="python">def function1(list_arg): a = function2() # returns an array of numbers list_arg = list(a) # Assign a new list to list_arg list1 = [0] * 5 function1(list1) print(list1) # Output: [0, 0, 0, 0, 0]</code>
이 예에서는 우리는 전달된 목록 list1을 배열 a의 요소로 수정하려고 했습니다. 그러나 list_arg = list(a) 행에서 list_arg에 새 목록을 할당하므로 list1에 대한 링크가 효과적으로 끊어지기 때문에 코드가 작동하지 않습니다.
해결책: 수정 목록 요소
원래 목록을 올바르게 수정하려면 전체 목록을 다시 할당하는 대신 새 요소를 개별 요소에 할당해야 합니다. 이는 슬라이싱을 사용하여 달성할 수 있습니다.
<code class="python">list_arg[:] = list(a)</code>
이것은 list(a)의 내용을 list_arg의 모든 요소에 할당합니다. 슬라이싱 [:]은 list_arg에 있는 요소의 전체 범위를 선택합니다.
결론
함수에서 목록으로 작업할 때 재할당은 수정하는 동안 기존 목록을 대체한다는 점을 기억하세요. 요소는 원래 목록을 유지합니다. 슬라이싱을 사용하여 목록 내의 요소를 수정하면 원본 목록이 그대로 유지됩니다.
위 내용은 Python의 함수 내에서 목록을 수정하는 방법: 재할당과 요소 수정?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!