我正在实现一个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] ?
我该如何实现?
答案 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)