每个循环我都在计算列表的值,结果大多是错误的值。为了找出问题所在,我偶然发现了一些奇怪的东西。
更改列表中的值
working_list[i] += value1
似乎对其他列表有影响。
“ working_list”是我需要进行进一步计算的列表,最后得到“ value2”,用于调整“ result_list”。我注意到,result_list不仅在计算的最后一步(在循环的结尾)发生了变化,而且似乎在修改working_list的过程中也发生了变化。 这使我认为我从根本上误解了列表的工作原理。
关键线的演示(据我所知,足以说明我的问题所在):
result_list_empty=[]
for i in range(8760):
results_list_empty.append(0)
results_list=results_list_empty
for n in range(years)
working_list=results_list_empty
for i in range(len(working_list)):
print 'BEFORE '+str(sum(result_list))
working_list[i] += value1
print 'AFTER '+str(sum(result_list))
value2=some_calulation(working_list)
result_list[i]+=value2
返回
BEFORE 3.97469913304
AFTER 5.61311451171
对我来说这是令人困惑的,因为代码应该从上到下工作。我不是在调用函数,而只是更改列表成员的值。因此,更改result_list对我而言没有任何意义。有人可以向我解释这里发生了什么吗?
欢呼