リストをコピーしますよね?しかし、コードでは、x = x[:]
私が理解していないものを見ています。どうすれば両方のコピーを同じものと呼ぶことができますか?
質問する
363 次
2 に答える
6
権利が最初に評価され、一時変数に配置され、xが一時変数に再割り当てされます。もちろん、あなたはそれを見ることはありません。
于 2012-04-22T23:51:06.883 に答える
2
あなたの質問に答えるために「[:]はPythonでどのように機能しますか?」この特定の表現自体のコンテキストでは少し注意が必要です
x = x[:]
それは本当に言っているようなものなので、それは起こりそうにありませんa = a
。
あなたは次のようなものを見る可能性が高いです
a = x[:]
これは簡単に言えば、によって参照されるリストのコピーを作成し、x
それをに割り当てa
ます。
あなたが単にやったなら
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[:]
、そのコンテキストでは、割り当てが有用な目的に役立ちます(ただし、最初にこれに遭遇したコンテキストはわかりません)。
于 2012-04-22T23:54:05.450 に答える