2014-10-18 104 views
0

我正在製作一個程序,用於執行一些操作,如添加,插入,彈出列表中的數字。 我還必須做一個「撤消」功能,爲此,我想在列表中列出一個列表來保存列表中的每一步,但我的測試無法正常工作。下面的代碼:列表中的Python列表撤消

def backup(l): 
     lbackup.append(list(l)) 

< - 在這裏我保存該列表中的每一步,通過調用這個函數

> def undo(l): 
>  l=lbackup[len(lbackup)-1] # here I give my list the previous list 
>  del lbackup[len(lbackup)-1] # here I delete the sublist from the history 

我的測試:

def testUndo(): 
    add(lista, 1) 
    backup(lista) 
    add(lista, 2) 
    backup(lista) 
    add(lista,111111) 
    print(lbackup) 
    print(lista) 
    undo(lista) 
    print(lista) 
    print(lbackup) 

於是我查了一下里面的撤銷功能,它的工作!它實際上將我的列表的值改變爲我想要的值,但是一旦它離開函數並在測試中撤消之後到達打印結果......它又具有相同的值。我知道列表是可變的,這可能是一個問題,但有什麼我可以做的嗎?對不起,如果我不夠乾淨。

回答

0

當你打電話,說,undo(lista)undol可以是相同的列表爲lista,但分配給l不會改變lista。相反,如果您有undo返回l,並將undo返回的值指定回list,那樣會導致您似乎需要的更改。

+0

Ooooh它工作^ _ ^非常感謝! – Katie44 2014-10-18 21:51:23