1

我正在使用 BFS 来计算图中的一些路径,并正在计算到每个节点的部分路径。这只是对实际问题的概述。

有问题的问题是,假设我有两个节点,它们之间有一个链接。它们都具有三个参数,建模为仅具有三个值的列表。

路径 uptil 节点 A 的内容在 listA 中,链接参数存储在 listC 中,并且将两者相加的结果放入作为节点 B 的一部分的 listB 中。

例如,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 概念吗?我认为列表的原始形式是不可变的。

4

1 回答 1

1

您可能正在listB像这样初始化:

listB = listA

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

listB = list(listA)
listB = listA[:]  # Or
于 2013-08-17T07:29:53.447 回答