我已经编写了一段时间的python,但不知怎的,我从来没有被这个问题困扰过。每当我将变量存储在数组中时,我最终都会存储实际的变量,而不是值。这就是我的意思:
var1 = [1]
arr1 = [var1]
arr1[0][0] = 2
print var1
我得到的结果是[2],即使我更改了arr1中的值而不是var1。好像var1存储在arr1中,而不是它的值,[1]。到底发生了什么?
答案 0 :(得分:1)
这是因为您正在更改var1。 Python通过引用传递,而不是通过值传递,因此您正在更改对象本身。
答案 1 :(得分:0)
你 实际存储了一个值。分配时:
list_a = [1]
变量list_a
的值是新列表的引用。无论何时传递它,都将该引用作为值传递。所以,
list_b = [list_a]
包含对原始列表的引用,list_b[0][0] = 2
将对其进行修改。