我如何"保存"列表或如何避免列表被覆盖?

时间:2014-05-17 07:03:06

标签: python list global-variables

我有这段代码:

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]。想法?

1 个答案:

答案 0 :(得分: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]