是否可以合并两个集合,以便对这两个集合的所有引用都引用新的?

Min*_*510 6 python python-3.x

在Python中,假设我有两个集合A和B,以及对这两个集合的多个引用。

有没有一种方法可以合并两个集合A和B,使对这两个集合的所有引用都引用新合并的集合?如果可能,运行时将是什么?

A = {1,3}
B = {2,4}
aRef1 = A
aRef2 = A
bRef1 = B
bRef2 = B
MergeSets(A,B)
# Now, whenever I use any of (A, B, aRef1, aRef2, bRef1, bRef2) 
# they refer to the same set which will be {1,2,3,4} 
Run Code Online (Sandbox Code Playgroud)

谢谢

编辑:

有人一直在问我为什么要这样做,这是我的以下回复之一的副本/粘贴:

所以我知道我可以做A.update(B),将B合并为A,但是然后我必须遍历对B的所有引用,并将它们设置为引用A。我问这样可以避免这些额外的迭代。我可以提供更多上下文,以针对我的特定情况找到一种新方法,但是我很想知道在一般情况下python是否可行。

此外,似乎我的问题已得到回答,并且断定这是不可能的。再次感谢大家:)

yat*_*atu 5

他们目前被引用到它们各自的集合AB根据您所做的分配。例如bRef1

id(B)
# 112140097128

id(bRef1)
# 112140097128
Run Code Online (Sandbox Code Playgroud)

set是否通过修改新集来修改原始集取决于您执行的操作类型。例如,如果执行就地操作:

bRef1 |= {5}
Run Code Online (Sandbox Code Playgroud)

并检查原始变量B,您可以看到它确实已更新:

print(B)
# {2, 4, 5}
Run Code Online (Sandbox Code Playgroud)

尽管合并两个集合时,除非也执行就地操作并因此显式更新两个集合之一,否则您将创建一个新对象:

new_set = aRef2 | bRef2

id(new_set)
# 112140098248
Run Code Online (Sandbox Code Playgroud)

但是,如果您就地更新了其中一个集合AB将其与另一个集合合并,鉴于您是从2不同的对象开始的,则无法将其更改为引用同一对象的所有集合。