def inter(self, right): """Intersection: returns a Set holding objects appearing in both sets """ assert isinstance(right, self.__class__) if len(right.data)==0: return self.copy() if len(self.data)==0: return right.copy() l1 = self l2 = right if len(l1.data) > len(right.data): l1 = right l2 = self # l1 is always shorter list for o in l2.data: o._setFlag = 0 for o in l1.data: o._setFlag = 1 newlist = [x for x in l2.data if x._setFlag==1] for o in l2.data: if hasattr(o, '_setFlag'): del o._setFlag for o in l1.data: if hasattr(o, '_setFlag'): del o._setFlag stringRepr = None if self.stringRepr and right.stringRepr: stringRepr = self.stringRepr+'/&/'+right.stringRepr elif verbose: import traceback traceback.print_stack() print(('intersecting sets with no stringRepr:', repr(self), repr(right))) stringRepr = None return self.__class__(misc.uniq(newlist), stringRepr=stringRepr)
def inter(self, right): """Intersection: returns a Set holding objects appearing in both sets """ assert isinstance(right, self.__class__) if len(right.data) == 0: return self.copy() if len(self.data) == 0: return right.copy() l1 = self l2 = right if len(l1.data) > len(right.data): l1 = right l2 = self # l1 is always shorter list for o in l2.data: o._setFlag = 0 for o in l1.data: o._setFlag = 1 newlist = [x for x in l2.data if x._setFlag == 1] for o in l2.data: if hasattr(o, '_setFlag'): del o._setFlag for o in l1.data: if hasattr(o, '_setFlag'): del o._setFlag stringRepr = None if self.stringRepr and right.stringRepr: stringRepr = self.stringRepr + '/&/' + right.stringRepr elif verbose: import traceback traceback.print_stack() print(('intersecting sets with no stringRepr:', repr(self), repr(right))) stringRepr = None return self.__class__(misc.uniq(newlist), stringRepr=stringRepr)
def union(self, right): """Union: returns a Set holding objects appearing in either list""" assert isinstance(right, self.__class__) stringRepr = None if len(right.data)==0: return self.copy() if len(self.data)==0: return right.copy() if self.stringRepr and right.stringRepr: if self.stringRepr == right.stringRepr: stringRepr = self.stringRepr else: stringRepr = self.stringRepr+'/|/'+right.stringRepr elif verbose: import traceback traceback.print_stack() print(('union of sets with no stringRepr:', repr(self), repr(right))) stringRepr = None return self.__class__( misc.uniq(self.data + right.data), stringRepr=stringRepr )
def union(self, right): """Union: returns a Set holding objects appearing in either list""" assert isinstance(right, self.__class__) stringRepr = None if len(right.data)==0: return self.copy() if len(self.data)==0: return right.copy() if self.stringRepr and right.stringRepr: if self.stringRepr == right.stringRepr: stringRepr = self.stringRepr else: stringRepr = self.stringRepr+'/|/'+right.stringRepr elif verbose: import traceback traceback.print_stack() print 'union of sets with no stringRepr:', repr(self), repr(right) stringRepr = None return self.__class__( misc.uniq(self.data + right.data), stringRepr=stringRepr )