为什么更改列表中的值会影响其他列表?

时间:2018-10-17 08:54:22

标签: python list

每个循环我都在计算列表的值,结果大多是错误的值。为了找出问题所在,我偶然发现了一些奇怪的东西。

更改列表中的值

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对我而言没有任何意义。有人可以向我解释这里发生了什么吗?

欢呼

0 个答案:

没有答案