Python集不会执行union

时间:2015-07-18 01:11:34

标签: python scope set union mutability

我有一个定义了成员的类:

self.myset = set()

当我执行myobject.myset.add('item')时,使用我的课程实例,它可以正常工作:print(myobject.myset)给我{'item'}。

但是,当我执行myobject.myset.union(yourset)时,yourset不为空,它将无效; print(myobject.myset)仍然打印为空集。为什么一个方法(add)工作而另一个方法(union)安静(没有异常抛出)失败?即使myobject.myset = yourset有效,但union也不会。

我正在使用Python 3。

2 个答案:

答案 0 :(得分:3)

switch(type) { case T_CHAR: for(i = 0; i < ni; i++) { for(j = 0; j < nj; j++) { for(k = 0; k < nk; k++) { u[i][j][k].m_char = f(v[i][j][k].m_char); } } } break; case T_INT: for(i = 0; i < ni; i++) { for(j = 0; j < nj; j++) { for(k = 0; k < nk; k++) { u[i][j][k].m_int = g(v[i][j][k].m_int); } } } break; } 不会就地修改旧版本,但set.union()会这样做。 set.add()会返回一个新的设置。

set.union()

这应该可以解决问题。有关详细信息,请参阅Python documentation on set.union()

答案 1 :(得分:1)

union不会修改集合 - 它会返回一个新集合。如果使用运算符进行并集和交集,则更清楚 - a.union(b)a | b执行相同的操作(除了方法表单可以在不创建额外临时对象的情况下使用三个或更多集合的联合)。对于就地联合,您可以使用update方法或等效(对于两组)形式a |= b