对两个重复集使用 update() 方法

Using update() method for two duplicate sets

我想将两个重复的集合加在一起。为什么我的代码 return None?

firstset = {1, 2, 3}
secondset = {1, 2, 3}
thirdset = firstset.update(secondset)
print(thirdset)

发生这种情况是因为您将 .update() 的 return 值分配给了 thirdset。更新就地发生(即它们变异 firstset),函数 returns None.

下面的代码片段显示了您可能的意图。请注意,firstsetthirdset 指向内存中的同一位置,因此当尝试读取 thirdset 的内容时,将反映使用 firstset 的更新,反之亦然。

firstset = {1, 2, 3}
secondset = {1, 2, 3}
firstset.update(secondset)
thirdset = firstset
print(thirdset)

集合更新将更新调用它的集合,returns None。

那是因为pythonset.update()方法returnNone。 阅读文档了解更多详情:https://docs.python.org/3/library/stdtypes.html#set-types-set-frozenset

如果你想得到加法,你可以做的是,

firstset.update(secondset)
print(firstset)

因为从更新函数来看,第一个集合是用新值更新的集合。

因为Python的内置容器类大多使用command-query separation,所以mutate a set return [=14=的方法]. (此规则的一个例外是 pop(),它既删除又 return 一个集合元素。)

所以不用

thirdset = firstset.update(secondset)

你可以写:

firstset.update(secondset)
thirdset = firstset

或者如果您想单独保留 firstset,请使用集合联合运算符 |:

thirdset = firstset | secondset

它更新了第一组。你可以使用 |还有

firstset = {1, 2, 3}
secondset = {5, 2, 4}
firstset |= secondset
print(firstset)