python - 是否可以合并两个集合,以便对这两个集合的所有引用都引用新的?
问题描述
在 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}
谢谢
编辑:
有些人一直在问我为什么要这样做,下面是我的一个回复的副本/粘贴:
所以我知道我可以做 A.update(B),将 B 合并到 A 中,但是我必须遍历所有对 B 的引用并将它们设置为引用 A。我在问这样我可以避免这些额外的迭代. 我可以提供更多上下文来为我的特定场景提供一种新方法,但我更想知道这在 python 中是否可能作为一般情况。
此外,看来我的问题已经得到解答,结论是这是不可能的。再次感谢大家:)
解决方案
根据您所做的分配,他们目前都在引用他们各自的集合A
或。B
例如在以下情况下bRef1
:
id(B)
# 112140097128
id(bRef1)
# 112140097128
是否通过修改新集合来修改原始集合的事实set
取决于您执行的操作类型。如果您执行就地操作,例如:
bRef1 |= {5}
并检查原始变量B
,您可以看到它确实已更新:
print(B)
# {2, 4, 5}
尽管当您合并两个集合时,除非您还执行就地操作并因此显式更新两个集合之一,否则您将创建一个新对象:
new_set = aRef2 | bRef2
id(new_set)
# 112140098248
但是,如果您就地更新其中一个集合A
或B
通过将其与另一个合并,假设您已经开始使用2
不同的对象,则无法将其更改为引用同一对象的所有集合。
推荐阅读
- c++11 - 没有定义嵌套类的优先级队列的自定义比较器
- django - 将控制台中的数据存储在数据库中并访问它
- python - 基于过滤器使用来自第二个数据帧的值更新数据帧
- javascript - 将 PostGIS 点对象转换为 geoJSON 以进行映射
- selenium - 如何使 Selenium WebDriverWait 等待页面上未指定位置的文本
- javascript - 执行源自从 AJAX 加载的外部文件的脚本
- java - 编写一个 Java 程序来评估后缀表示法中的表达式 - 数据结构和算法类
- sql - 当表之间建立关系时,幕后发生了什么?
- c# - OLEDB 读取 Excel 文件在 IIS asp.net C# 上不起作用
- docker - jenkins ssh 管道插件不会与 docker run 挂断