understanding python variable assignment
我正在自学Python(以及一般的编程),对变量赋值有点困惑。我明白如果我有
1 2 | >>> a = [1,2,3] >>> b = a |
另外,考虑这个例子:
1 2 3 4 5 6 | >>> a = [1, 2, 3] >>> b = a >>> x = a[1] >>> a[1] = 4 >>> print a, b, x [1, 4, 3] [1, 4, 3] 2 |
我从这个例子中看到,
这里的区别是,
1 | b = a[:] |
将创建一个不同对象的
考虑这个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | In [20]: a = [[1], [2], [3]] In [21]: b = a In [22]: x = a[1] In [23]: a Out[23]: [[1], [2], [3]] In [24]: b Out[24]: [[1], [2], [3]] In [25]: x Out[25]: [2] In [26]: a[1][0] = 4 In [27]: a Out[27]: [[1], [4], [3]] In [28]: b Out[28]: [[1], [4], [3]] In [29]: x Out[29]: [4] |
这里的区别在于,当我们对
在你的例子中,当你告诉
后来,当你告诉
你说
你是说,在任务的这个时刻,
同样的道理也适用于
另一个例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | a = [1, 2, 3,] b = a print a, b # Prints #[1, 2, 3] #[1, 2, 3] a = [4, 5, 6] print a, b # Prints #[4, 5, 6] #[1, 2, 3] |
第二个问题的答案是当你
当您更改
我希望我能解释清楚。如果不评论。
编辑:正是@jonsharpe所说的。
我也是Python的新手。根据我目前所了解的,python中的所有内容都是一个对象,变量只是对这些对象的引用。
所以b=a意味着b指向与a相同的物体。
但是有两种类型的对象是可变的和不可变的。list是一个可变的对象,这意味着代码中a和b引用的实际列表可以修改。因此,您可以看到,当您对a进行更改时,实际上也在更改基础列表b。
要创建一个全新的列表b,可以使用b=a[:]