2013-08-17 16 views
1

我正在使用BFS来计算图中的某些路径,并计算到每个节点的部分路径。这只是对实际问题的概述。成对添加两个列表,突变其中一个源列表

问题在于,让我们说我有两个节点之间有一个链接。它们都有三个参数,只有三个值的列表。

uptil节点的路径的内容是在listA的,链路参数存储在listC和添加两者的结果进入一个数组listB是0节点B.

例如,= listA的一部分[ ,0,1]和listC = [1,1,1]。我在列表上进行成对添加,如

listB[0] = listA[0] + listC[0] 
listB[1] = listA[1] + listC[1] 
listB[2] = listA[2] + listC[2] 

因此,在操作结束时,我应该有listB = [1,1,2]。据我所知,listA不应该被改变。但是,当我执行此操作时,即使listA不在任何操作的LHS上,listA和listB也会具有相同的值。有没有我在这里失踪的Python-y概念?我认为列表是以原始形式不变的。

回答

1

你可能初始化listB这样的:

listB = listA 

这只是使两个变量指向同一个列表对象。如果你改变一个,你改变另一个。克隆列表,而不是:

listB = list(listA) 
listB = listA[:] # Or 
+0

辉煌。万分感谢。我没有意识到将一个列表指向另一个列表。我已经在这个问题上头痛了两天,现在想我出错了。我该如何对此表示赞赏?它不允许我? – adwaraki

+0

@adwaraki:不知道,你可能没有足够的声望(我认为15代表是upvoting的最小值)。 – Blender

相关问题