0

の出力をとは異なるようにする、 lists( Case 1) のプロパティはどのように呼び出されますか? print yCase 2

# Case 1: using a list as value
>>> x = ["one", "two", "three"]
>>> y = x
>>> x[0] = "four"
>>> print x
["four", "two", "three"]
>>> print y
["four", "two", "three"]

# Case 2: using an integer as value
>>> x = 3
>>> y = x
>>> x = x + 1
>>> print x
4
>>> print y
3

編集

この動作がリストが変更可能で文字列が変更可能ではないこととは関係がないことを示すために、ケース 2 の代わりに次のケースを指定することもできます。

>>> x = ["one", "two", "three"]
>>> y = x
>>> x = x + ["four", "five"]
>>> print x
["four", "two", "three", "four", "five"]
>>> print y
["four", "two", "three"]
4

1 に答える 1

2

2 つのスニペットの主な違いは次のとおりです。

>>> x[0] = "four"

>>> x = x + 1

最初のケースでは既存のオブジェクトを変更し、2 番目のケースでは新しいオブジェクトを作成します。したがって、最初のスニペットには 1 つのオブジェクトと、それを参照する 2 つの名前 x と y があり、2 番目のスニペットには 2 つのオブジェクトがあります。これはリストの可変性 (およびintの不変性) とは何の関係もないことに注意してください。2 番目のスニペットは次のように記述できます。

x = [1,2,3]
y = x 
x = x + [4]

基本的に同じ結果 (= 2 つの異なるオブジェクト) が得られます。

于 2013-06-20T13:59:42.393 に答える