我正在使用BFS计算图中的一些路径,并计算每个节点的部分路径。这只是对实际问题的概述。
有问题的是,让我们说我有两个节点,它们之间有一个链接。它们都有三个参数,建模为只有三个值的列表。
路径uptil节点A的内容在listA中,链接参数存储在listC中,并且将它们两者相加的结果进入listB,它是节点B的一部分。
例如,listA = [0,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和listB最终具有相同的值,即使listA不在任何操作的LHS上。我在这里缺少任何Python-y概念吗?我认为列表的原始形式是不可变的。
答案 0 :(得分:1)
您可能正在初始化listB
,如下所示:
listB = listA
这只是使两个变量指向同一个列表对象。如果你改变了一个,你就会改变另一个。改为克隆列表:
listB = list(listA)
listB = listA[:] # Or