リストをコピーしますか?コードでは私が理解していないそのx = x[:]
を見ています。どのように両方のコピーを同じものと呼ぶことができますか?[:]はどのようにPythonで動作しますか?
4
A
答えて
6
右が評価され、一時変数に配置され、xが一時変数に再割り当てされます。もちろん、あなたはそれを見ることはありません。
2
「[:]はどのようにPythonで動作しますか?
は、それ自体で、この特定の表現の文脈で、それはa = a
を言って本当に好きだとして発生する可能性が高いではありません
x = x[:]
少しトリッキー です。
あなたは、簡単な言葉でx
によって参照リストのコピーを作成し、a
に割り当て
a = x[:]
のようなものを参照してくださいする可能性が高くなります。
あなたは、単に
a = x
をした場合は、両方の変数が同じ場所に参照することになり、変数のいずれかへの変更は両方に反映されるだろう。ここで
は、あなたがコロン表記を使用していない場合は何が起こるかである例えば、a = x
:
In [31]: x = range(5)
In [32]: a = x
In [33]: a
Out[33]: [0, 1, 2, 3, 4]
In [34]: x
Out[34]: [0, 1, 2, 3, 4]
In [35]: a[3] = 99 # I am making a change in a
In [36]: a
Out[36]: [0, 1, 2, 99, 4]
In [37]: x
Out[37]: [0, 1, 2, 99, 4] # but x changes too!
a = x[:]
In [38]: x = range(5)
In [39]: a = x[:]
In [40]: a
Out[40]: [0, 1, 2, 3, 4]
In [41]: x
Out[41]: [0, 1, 2, 3, 4]
In [42]: a[3] = -99
In [43]: a
Out[43]: [0, 1, 2, -99, 4] # a changes
In [44]: x
Out[44]: [0, 1, 2, 3, 4] # x does not change
注意して、この比較:@gnibblerが短く、完全な例を提供します( コメントの下)x = x[:]
が出現する可能性があります。このコンテキストでは、 という割り当てが有用な目的に役立つでしょう(ただし、あなたがどのような状況で来たのかはわかりませんこれを元に)。
関連する問題
- 1. メソッドはどのようにPythonで動作しますか?
- 2. Pythonはどのようにfloat/doubleで動作しますか?
- 3. ビットマスクはどのようにPythonで動作しますか?
- 4. ストリップはどのようにPythonで動作しますか?
- 5. threading.timerはどのようにPythonで動作しますか
- 6. プログレスバーはどのようにPythonで動作しますか?
- 7. どのようにpython Pyminizip compress_multipleは動作しますか?
- 8. python fuzzywuzzyのprocess.extract():どのように動作しますか?
- 9. Meteorはどのように動作しますか?クライアントとサーバーはどのように動作しますか?
- 10. この減算はどのようにしてPythonで動作しますか?
- 11. Python Asynchronous Comprehensions - どのように動作しますか?
- 12. List ComprehensionはPythonでどのように正しく動作しますか?
- 13. フィルタリングはどのようにしてPythonで動作しますか?
- 14. rsintはPythonでrsaでどのように動作しますか?
- 15. 派生クラスのコンストラクタはどのようにPythonで動作しますか?
- 16. Pythonデコレータはどのようにこのコードで動作しますか?
- 17. choiceboxはPythonのeasyguiでどのように動作しますか?
- 18. "1 << i"のシフトはどのようにPythonで動作しますか?
- 19. Pythonのガベージコレクションはどのようにクラスメソッドで動作しますか?
- 20. どのように/これはなぜPythonで動作しますか? rover._Dog__password()
- 21. "in"と "not in"文はどのようにPythonで動作しますか
- 22. if演算子はPythonでどのように動作しますか?
- 23. textwrap.wrap()&textwrap.fill()はPython 2でどのように動作しますか?
- 24. Python - スクロールバーはどのようにラベル、ラジオボタン、ボタンで動作しますか?
- 25. リストのpythonイテレータはどのように実際に動作しますか?
- 26. Makefileでは、VPATHはどのように動作しますか?
- 27. 「コール」はどのようにjavascriptで動作しますか?
- 28. NutchはHadoopクラスタでどのように動作しますか?
- 29. JBehaveはJavaでどのように動作しますか?
- 30. jQuery Mobileはjsfiddle.netでどのように動作しますか?
「a = a + 1」と同じです。最初に 'a + 1'が評価され、結果は' a'の現在の値を上書きします。しかし、 'x = x [:]'は不要です。 'x'が関数の引数であり、引数のコピーを強制したいのでなければです。 –