0

list() 的属性是如何Case 1调用的,它使输出与print y不同Case 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

两个片段之间的主要区别是

>>> x[0] = "four"

对比

>>> x = x + 1

在第一种情况下,您修改现有对象,在第二种情况下,您创建一个新对象。所以第一个片段有一个对象和两个名称,x 和 y,引用它,在第二个片段中有两个对象。请注意,这与列表的可变性(以及整数的不变性)无关,您可以将第二个片段编写为

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

并获得基本相同的结果(=两个不同的对象)。

于 2013-06-20T13:59:42.393 回答