问题描述
使用函数重新分配列表中的值时遇到麻烦。我除了变量x之外,在运行函数后保持不变。但是它以某种方式改变了。
我的代码是:
x = [0,0]
def test(j):
j[0] = "K"
return j
print (x)
t=test(x)
print (t)
print (x)
我的输出是:
[0,0]
['K',0]
['K',0]
我的预期输出是:
[0,0]
[0,0]
解决方法
您实际上并不是在创建两个列表。 t
仅将引用复制到列表x
。因此,您要在原始列表中重新分配值。听起来您想要列表的副本并在新列表上重新分配值?如果是这样,请更改此行:
t=test(x.copy())
Python中的所有参数(参数)均通过引用传递。这意味着,如果您更改函数中参数所指的内容,则更改也将反映在调用函数中。