在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是否可行。
此外,似乎我的问题已得到回答,并且断定这是不可能的。再次感谢大家:)
他们目前都被引用到它们各自的集合A或B根据您所做的分配。例如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)
但是,如果您就地更新了其中一个集合A或B将其与另一个集合合并,鉴于您是从2不同的对象开始的,则无法将其更改为引用同一对象的所有集合。
| 归档时间: |
|
| 查看次数: |
144 次 |
| 最近记录: |