>  기사  >  백엔드 개발  >  Python의 함수 내에서 목록을 수정하는 방법: 재할당과 요소 수정?

Python의 함수 내에서 목록을 수정하는 방법: 재할당과 요소 수정?

DDD
DDD원래의
2024-10-28 21:03:30203검색

How to Modify a List Within a Function in Python: Reassignment vs. Element Modification?

함수 내 목록 수정

함수 내 목록으로 작업할 때는 참조 및 값 할당의 개념을 이해하는 것이 중요합니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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