下面是我的函数的简化版本,它比较三组数字,并找到相关性最高的两组:
inputs = ['vars_one', 'vars_two', 'vars_three']
def MostCorrelatedInputs(inputs):
correlation = 0
saved_inputs = inputs
for i in inputs:
testlist = saved_inputs
testlist.remove(i)
new_correlation = FindCorrelation(testlist)
if new_correlation > correlation:
correlation = new_correlation
outputs = testlist
return outputs
问题是,当我运行函数时,remove()
函数似乎改变了保存的\u inputs变量,即使我在inputs
上调用它。这是垃圾回收的问题吗?为什么保存的_inputs变量会被for循环更改,如果remove()
希望更改此变量,是否有更好的方法来实现我的目标?你知道吗
所以当你做一个:
以及
testlist和保存的输入都引用相同的object/list-inputs。你知道吗
你需要一份清单的“深度副本”。i-e公司
引用您的示例代码:
这将导致:
你必须这样做:
要获得结果:
我想这正是你所期待的。你知道吗
您正在声明testlist以引用与输入相同的引用。你知道吗
因此,如果要使testlist只包含值而不包含引用,则需要对列表执行以下操作:
我给你一个提示:
这是因为
b
引用的对象与a
引用的对象相同!如果您从b
中删除某些内容,那么您也将从a
引用的对象中删除它。要更改此设置(如创建副本),请执行以下操作相关问题 更多 >
编程相关推荐