Python函数重新分配外部列表值

问题描述

使用函数重新分配列表中的值时遇到麻烦。我除了变量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中的所有参数(参数)均通过引用传递。这意味着,如果您更改函数中参数所指的内容,则更改也将反映在调用函数中。