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天大的学习者)完全不熟悉,所以任何帮助都会非常感激。
答案 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
该计划做了正确的事 - 这是你的期望,需要稍作调整。