【发布时间】:2014-05-06 20:37:12
【问题描述】:
我正在尝试自学 Python(以及一般的编程),但对变量赋值有点困惑。我明白,如果我有
>>> a = [1,2,3]
>>> b = a
b 与 a 引用内存中的同一对象。因此,如果我想创建一个新列表 b,其值与当前 a 的值相同,我该如何实现?
另外,考虑这个例子:
>>> a = [1, 2, 3]
>>> b = a
>>> x = a[1]
>>> a[1] = 4
>>> print a, b, x
[1, 4, 3] [1, 4, 3] 2
我从这个例子中看到,x 是一个新对象,但b 指向a。有人可以向我解释这里发生了什么,为什么 x 是一个新对象而 b 不是?
【问题讨论】:
-
我不认为它是重复的。
-
这回答了关于如何创建新列表的第一个问题。谢谢!第二个问题让我很困惑。
-
如果这不是重复的,它可能太宽泛了。这里具体发生的事情更多地与列表和整数的处理以及 Python 在内部表示它们的方式有关,而不是与它如何解决分配有关。如果我们必须检查非常数据类型,它确实会变得冗长。
-
不,这与整数无关。
-
这里的区别是
a是一个list,是可变的(即可以原地改变),而a[1]是一个int,是不可变的(即可以'不要原地改变)。a[1] = 4替换2列表中的4,但x仍指向2。
标签: python