Python 集不会执行合并
Python set won't perform union
我有一个 class,其中定义了一个成员:
self.myset = set()
当我使用我的 class 的实例执行 myobject.myset.add('item')
时,它工作正常:print(myobject.myset)
给我 {'item'} 。
但是,当我执行myobject.myset.union(yourset)
时,其中yourset
不为空,它就不起作用; print(myobject.myset)
仍打印为空集。为什么一种方法 (add
) 有效而另一种方法 (union
) 却悄悄地(没有抛出异常)失败?即使 myobject.myset = yourset
有效,但 union
尤其无效。
我正在使用 Python 3.
set.union()
不会就地修改旧集,但 set.add()
会。 set.union()
returns 一组新的。
myobject.myset = myobject.myset.union(yourset)
这应该可以解决问题。有关详细信息,请参阅 Python documentation on set.union()
。
union
不修改集 - 它 returns 一个新集。如果您对并集和交集使用运算符,这会更清楚 - a.union(b)
和 a | b
做同样的事情(除了方法形式可以采用三个或更多集合的并集而无需创建额外的临时对象)。对于就地联合,您可以使用 update
方法或等效的(对于两个集合)形式 a |= b
.
我有一个 class,其中定义了一个成员:
self.myset = set()
当我使用我的 class 的实例执行 myobject.myset.add('item')
时,它工作正常:print(myobject.myset)
给我 {'item'} 。
但是,当我执行myobject.myset.union(yourset)
时,其中yourset
不为空,它就不起作用; print(myobject.myset)
仍打印为空集。为什么一种方法 (add
) 有效而另一种方法 (union
) 却悄悄地(没有抛出异常)失败?即使 myobject.myset = yourset
有效,但 union
尤其无效。
我正在使用 Python 3.
set.union()
不会就地修改旧集,但 set.add()
会。 set.union()
returns 一组新的。
myobject.myset = myobject.myset.union(yourset)
这应该可以解决问题。有关详细信息,请参阅 Python documentation on set.union()
。
union
不修改集 - 它 returns 一个新集。如果您对并集和交集使用运算符,这会更清楚 - a.union(b)
和 a | b
做同样的事情(除了方法形式可以采用三个或更多集合的并集而无需创建额外的临时对象)。对于就地联合,您可以使用 update
方法或等效的(对于两个集合)形式 a |= b
.