我有一个定义了成员的类:
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。
答案 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
。