print(ys)
for i in range(counter):
if(ys[i]<yzero[i]):
dupys[i]=yzero[i]
#plt.plot(xs,dupys) #this is used for checking on the levelline graph
print(ys)
我尝试了许多不同的方法来测试它,但似乎它无缘无故地改变了,从代码中,我们可以看到我只更改了dupys列表。
输出:
[ - 1.401109325007359,-1.4012097591798365,-1.4013107885799283,-1.4013711090958765,-1.4013991265977308,...]
[ - 1.4,-1.4,-1.4,-1.4,-1.4,-1.4,-1.4,-1.4,-1.4,-1.4,-1.4,-1.4,...]
答案 0 :(得分:0)
即使代码的一部分缺失,我想你面临以下问题:
JSESSIONID
如您所见,即使您正在修改新列表中的值,也会修改旧列表中的值 要解决此问题,您应该为新列表分配旧副本的副本:
dear_old_value = ["rusty_value0", "rusty_value1", "rusty_value2", "rusty_value3"]
new_values = dear_old_value
new_values[0] = "shiny_value0"
new_values[2] = "shiny_value2"
print dear_old_value # OUTPUT: ['shiny_value0', 'rusty_value1', 'shiny_value2', 'rusty_value3']
在Python中,您应该将变量名称视为对象的标记
在我们的示例中,我们没有将dear_old_value = ["rusty_value0", "rusty_value1", "rusty_value2", "rusty_value3"]
new_values = list(dear_old_value)
new_values[0] = "shiny_value0"
new_values[2] = "shiny_value2"
print dear_old_value # OUTPUT: ['rusty_value0', 'rusty_value1', 'rusty_value2', 'rusty_value3']
中包含的值分配给dear_old_values
,我们只是说new_values
引用的对象现在也会被dear_old_values
引用。<登记/>
您可以检查对象的ID以确认:
new_values
为了避免这种情况,我们将变量(dear_old_value = ["rusty_value0", "rusty_value1", "rusty_value2", "rusty_value3"]
new_values = dear_old_value
print id(dear_old_value) # 50779920
print id(new_values) # 50779920
)初始化为新的new_values
对象(在内存中具有不同的位置),然后我们将项目推送到{ {1}}进入它
如果您现在检查ID,您将获得此结果:
list
请记住,Python中的所有对象的行为都是这样的。