2014-10-18 61 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