ホームページ >バックエンド開発 >Python チュートリアル >関数のパラメータとして渡されたリストを変更しても元のリストに影響しないのはなぜですか?

関数のパラメータとして渡されたリストを変更しても元のリストに影響しないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-27 01:12:03720ブラウズ

Why Does Modifying a List Passed as a Parameter in a Function Not Affect the Original List?

関数内のリストの変更

プログラミングでは、特にデータを操作する関数でリストを操作するのが一般的です。ただし、関数内でパラメーターとして渡されたリストを変更しようとすると、問題が発生します。

次のコード スニペットを考えてみましょう:

def function1(list_arg):
    a = function2()  # returns an array of numbers
    list_arg = list(a)

list1 = [0] * 5
function1(list1)

関数 1 を呼び出した後にリスト 1 が変更されることが予想されるかもしれませんが、それは変わらないままです。これは、list_arg 変数に何かを代入するときに、それが新しい値を指すためです。ただし、元のリストは影響を受けません。

これを解決するには、代わりに元のリストの要素を変更します。

def function1(list_arg):
    a = function2()  # returns an array of numbers
    list_arg[:] = list(a)

list_arg[:] を使用すると、リストのすべての要素が効果的に置き換えられます。元のリスト。ただし、このようなインプレース変更は混乱を招く可能性があり、常に最良のアプローチであるとは限らないことに注意してください。

以上が関数のパラメータとして渡されたリストを変更しても元のリストに影響しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。