如何将新列表分配给作为参数传递的列表?

时间:2018-09-26 16:44:27

标签: python list reference

我正在实现一个API的功能,该功能需要接收一个列表,对其进行一些修改后制作一个副本,然后将out参数设置为副本。即该函数不返回任何内容,但必须更改作为参数传入的列表对象。

类似这样的东西:

l = [1,2,3]

def f(passed_in_list):
   different_list = [4,5,6]
   passed_in_list = different_list[:]

print(l)   # Prints [1,2,3]. How to make it [4,5,6] ?

我该如何实现?

3 个答案:

答案 0 :(得分:2)

这让我震惊,因为它是一种危险的设计模式,创建了对全局范围有故意副作用的功能。我会小心做这样的事情。话虽这么说,您似乎并未调用函数,这可能就是为什么您没有看到期望的结果。

答案 1 :(得分:1)

您需要实际调用函数:

l = [1,2,3]

def f(passed_in_list):

   passed_in_list[:] = [4,5,6]

f(l)

print(l)

收益:

[4, 5, 6]

答案 2 :(得分:1)

您需要修改列表,而不是指向它的变量。正如其他人提到的,您需要调用该函数:

l = [1,2,3]


def f(passed_in_list):
   different_list = [4,5,6]
   passed_in_list[:] = different_list[:]


f(l)
print(l)