2014-05-17 83 views
0

我有这样的代码:如何“保存”列表或如何避免列表被覆盖?

def jaja(lista): 
    lista.append(2) 
    return lista 

a=[2,3] 
b=jaja(a) 
print(a,b) 

我希望能得到[2,3] [2,3,2],但由于一些奇怪的原因,列表中也会发生变化,所以我得到[2,3, 2] [2,3,2]。想法?

+0

https://docs.python.org/2/faq/programming.html#how-do-i-copy-an-对象中的Python – devnull

回答

1

a更改是因为列表通过引用传递给您的函数,所以当您追加到函数中时,您将追加到原始列表。如果您不希望原始列表发生更改,请复制:

def jaja(lista): 
    lista = lista[:] # a simple way to copy a list in Python 
    lista.append(2) 
    return lista 

a=[2,3] 
b=jaja(a) 
print(a,b) # prints [2,3] [2,3,2]