Python 集有这些方法:
s.union(t) s | t new set with elements from both s and t
s.update(t) s |= t return set s with elements added from t
同样,还有这些:
s.intersection_update(t) s &= t return set s keeping only elements also found in t
s.intersection(t) s & t new set with elements common to s and t
等等,对于所有标准的关系代数运算。
这里到底有什么区别?我看到它说 update() 版本返回 s 而不是新集,但是如果我写 x = s.update(t)
,这是否意味着 id(x) == id(s)
?他们现在引用的是同一个对象吗?
为什么要实现两套方法?它似乎没有添加任何重要的功能。
原文由 temporary_user_name 发布,翻译遵循 CC BY-SA 4.0 许可协议
他们 非常 不同。一个集合 就地 改变集合,而另一个保留原始集合,并返回一个 _副本_。
请注意
s
是如何保持不变的。现在我改变了
s
本身。还要注意.update()
似乎没有返回任何东西;它没有返回s
给调用者,Python 解释器也没有回显值。在 Python 中就地更改对象的方法永远不会返回原始对象。它们的返回值始终是
None
而不是(永远不会回显)。