参考平等 Python

Reference Equality Python

我想要如下所示的功能。试了很多东西还是不行。

>>> a, b = [1], [2]
>>> k = [a, a, b]
>>> k
[[1], [1], [2]]

现在如预期的那样,如果我更改第二个值,第一个值将自动更改。

>>> k[0][0] = 3
>>> k
[[3], [3], [2]]

您会看到更改一个值如何影响另一个值。

现在我想以某种方式 link 第三个元素与前两个元素,这样每当我更改这三个元素中的任何一个时,link 编辑到的每个元素都会发生变化。我想要以下行为:

>>> *Do something to link k[1] or k[0] with k[2]*
>>> k[-1][0] = 4
>>> k
>>> [[4], [4], [4]]

我已尝试执行以下操作但失败了,如下所示:

>>> b = a
>>> k
>>> [[3], [3], [2]]

请帮我实现以上目标。

我想解决的实际问题: 我正在实施最小切割算法。在这个算法中,我需要在每一步合并两个顶点。我正在尝试通过 link 将我想要合并的两个顶点合并在一起。

这是你想要的吗?

a,b = [1],[2]
k = [a,a,b]  # store references to lists a and b
print(k)
k[0][0] = 3  # change the first cell's list's first element
print(k)     # second cell changes as well since it references same list
k[-1] = k[0] # store the first cell's reference in the last cell.  All reference the same list 'a' now.
k[1][0] = 4
print(k)

输出:

[[1], [1], [2]]
[[3], [3], [2]]
[[4], [4], [4]]