关于python:如何“保存”列表或如何避免列表被覆盖?

How do i “save” a list or how can I avoid that a list gets overwritten?

本问题已经有最佳答案,请猛点这里访问。

我有这个代码:

1
2
3
4
5
6
7
def jaja(lista):
    lista.append(2)
    return lista

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

我本来希望得到[2,3][2,3,2],但由于一些奇怪的原因,列表A也发生了变化,所以我得到了[2,3,2][2,3,2]。思想??


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

1
2
3
4
5
6
7
8
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]