関数内のリストの変更
関数内でリストを操作する場合、参照と値の割り当ての概念を理解することが重要です。 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 中国語 Web サイトの他の関連記事を参照してください。