python - a=[1,2,3,4,5],b=a和b=a[:],有区别么?
ringa_lee
ringa_lee 2017-04-18 09:23:15
0
3
966
ringa_lee
ringa_lee

ringa_lee

全員に返信(3)
迷茫

あなたはそれを呼びます

リーリー

違いがわかります:

  • 前者は参照を渡します

  • 後者はコピーです

いいねを押す +0
大家讲道理
  • b=a は、b が参照するオブジェクト a

  • に参照させます。
  • a[:] は a のコピーを作成するため、b=a[:]b にこのコピーを参照させます。つまり、ba は別のオブジェクトを参照しますが、これらは2 つのオブジェクトは等しい (同じではないが同等)

これが、表面的には両者に違いがないように見える理由ですが、前者の場合、b または a を変更すると、両方とも同じオブジェクトを参照しているため影響を受けます。後者は異なるオブジェクトを参照するため、相互に影響しません。 @hsfzxjy の例はこれを指摘するものであり、実験を行うことで違いを知ることができます。


私が回答した質問: Python-QA

いいねを押す +0
Ty80

Pythonにはオブジェクトのアドレスを取得できるidという関数があります。これを出力してみると分かります。 Direct = は元のオブジェクトを参照する参照割り当てであり、[:] は新しいオブジェクト

を生成する再派生です。 リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!