Python:“插入”操作后,2-D变量不保留值

时间:2016-05-01 16:03:07

标签: python python-3.x

temp={}
L=[2,4,6]
temp[0]=[1,2,3]  #ignore
temp[1]=[4,5,6]  #ignore
L.insert(1,3)    
temp[2]=L
print(temp[2])   #before insert
L.insert(2,3)
temp[3]=L
print(temp[3])
print(temp[2])   #after insert

在第二次插入操作后,temp [2]变量不保留它的值。相反,它取决于L的新值,在我看来,这应该不会受到此操作的影响。

您可以在插入之前和之后的打印语句中看到temp [2]值的差异。

如果有人可以,请解释后端究竟发生了什么。我对蟒蛇(2天大的学习者)完全不熟悉,所以任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

您的代码中只有一个列表,无论您是存储还是修改它,它仍然是相同的列表:

temp = {}  # create a dictionary "temp"
L = [2, 4, 6]  # create a list "L"
L.insert(1, 3) # insert elements into list that "L" names
temp[2] = L  # add what "L" names into the dictionary (not a copy)
print(temp[2])  # print that same dictionary value
L.insert(2, 3)  # modify the list that "L" names
temp[3] = L  # insert that same list into the dictionary under a new key (not a copy)
print(temp[3])  # print that same dictionary value
print(temp[2])  # print the previous dictionary value

如果要存储当前状态,则需要复制它:

...
temp[2] = list(L)  # add a copy of what "L" names into the dictionary
print(temp[2])  # print that same dictionary value
L.insert(2, 3)  # modify the original list that "L" names
temp[3] = list(L)  # insert that a copy of the modified list into the dictionary under a new key
print(temp[3])  # print that same dictionary value
print(temp[2])  # print the previous dictionary value

该计划做了正确的事 - 这是你的期望,需要稍作调整。