成对添加两个列表,改变其中一个源列表

时间:2013-08-17 07:27:45

标签: list python-3.x pydev

我正在使用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概念吗?我认为列表的原始形式是不可变的。

1 个答案:

答案 0 :(得分:1)

您可能正在初始化listB,如下所示:

listB = listA

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

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