ringa_lee
あなたはそれを呼びます
違いがわかります:
前者は参照を渡します
後者はコピーです
b=a は、b が参照するオブジェクト a
b=a
b
a
a[:] は a のコピーを作成するため、b=a[:] は b にこのコピーを参照させます。つまり、b と a は別のオブジェクトを参照しますが、これらは2 つのオブジェクトは等しい (同じではないが同等)
a[:]
b=a[:]
これが、表面的には両者に違いがないように見える理由ですが、前者の場合、b または a を変更すると、両方とも同じオブジェクトを参照しているため影響を受けます。後者は異なるオブジェクトを参照するため、相互に影響しません。 @hsfzxjy の例はこれを指摘するものであり、実験を行うことで違いを知ることができます。
私が回答した質問: Python-QA
Pythonにはオブジェクトのアドレスを取得できるidという関数があります。これを出力してみると分かります。 Direct = は元のオブジェクトを参照する参照割り当てであり、[:] は新しいオブジェクト
あなたはそれを呼びます
リーリー違いがわかります:
前者は参照を渡します
後者はコピーです
をb=a
は、b
が参照するオブジェクトa
a[:]
は a のコピーを作成するため、b=a[:]
はb
にこのコピーを参照させます。つまり、b
とa
は別のオブジェクトを参照しますが、これらは2 つのオブジェクトは等しい (同じではないが同等)これが、表面的には両者に違いがないように見える理由ですが、前者の場合、
b
またはa
を変更すると、両方とも同じオブジェクトを参照しているため影響を受けます。後者は異なるオブジェクトを参照するため、相互に影響しません。 @hsfzxjy の例はこれを指摘するものであり、実験を行うことで違いを知ることができます。私が回答した質問: Python-QA
Pythonにはオブジェクトのアドレスを取得できるidという関数があります。これを出力してみると分かります。 Direct = は元のオブジェクトを参照する参照割り当てであり、[:] は新しいオブジェクト
を生成する再派生です。 リーリー