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)
我尝试了许多不同的方法来测试它,但是它似乎是无缘无故地自己改变的,从代码中,我们可以看到I只改变了dupys列表。你知道吗
output:
[-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, ...]
即使缺少部分代码,我想您也会面临以下问题:
如您所见,即使您正在修改新列表中的值,也会修改旧列表。
要解决此问题,应为新列表指定旧列表的副本:
在Python中,您应该将变量名看作对象的标记。
在我们的例子中,我们没有将
dear_old_values
中包含的值赋给new_values
,我们只是说dear_old_values
引用的对象现在也将被new_values
引用。您可以检查对象的ID以确认这一点:
为了避免这种情况,我们将变量(
new_values
)初始化为一个新的list
对象(在内存中有一个不同的位置),然后将dear_old_varables
中的项推入其中。如果您现在检查ID,您将得到以下结果:
请记住,Python中的所有对象的行为都是这样的。你知道吗
相关问题 更多 >
编程相关推荐