[Python-checkins] python/dist/src/Lib sets.py,1.37,1.38

rhettinger@users.sourceforge.net rhettinger@users.sourceforge.net
Sun, 02 Feb 2003 06:27:21 -0800


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1:/tmp/cvs-serv25238

Modified Files:
	sets.py 
Log Message:
SF patch #678899:  Save time and memory by using itertools in sets module.



Index: sets.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/sets.py,v
retrieving revision 1.37
retrieving revision 1.38
diff -C2 -d -r1.37 -r1.38
*** sets.py	14 Jan 2003 16:40:06 -0000	1.37
--- sets.py	2 Feb 2003 14:27:19 -0000	1.38
***************
*** 58,62 ****
  
  __all__ = ['BaseSet', 'Set', 'ImmutableSet']
! 
  
  class BaseSet(object):
--- 58,62 ----
  
  __all__ = ['BaseSet', 'Set', 'ImmutableSet']
! from itertools import ifilter
  
  class BaseSet(object):
***************
*** 183,187 ****
          else:
              little, big = other, self
!         common = filter(big._data.has_key, little._data)
          return self.__class__(common)
  
--- 183,187 ----
          else:
              little, big = other, self
!         common = ifilter(big._data.has_key, little)
          return self.__class__(common)
  
***************
*** 205,214 ****
          selfdata = self._data
          otherdata = other._data
!         for elt in selfdata:
!             if elt not in otherdata:
!                 data[elt] = value
!         for elt in otherdata:
!             if elt not in selfdata:
!                 data[elt] = value
          return result
  
--- 205,212 ----
          selfdata = self._data
          otherdata = other._data
!         for elt in ifilter(otherdata.has_key, selfdata, True):
!             data[elt] = value
!         for elt in ifilter(selfdata.has_key, otherdata, True):
!             data[elt] = value
          return result
  
***************
*** 229,237 ****
          result = self.__class__()
          data = result._data
-         otherdata = other._data
          value = True
!         for elt in self:
!             if elt not in otherdata:
!                 data[elt] = value
          return result
  
--- 227,233 ----
          result = self.__class__()
          data = result._data
          value = True
!         for elt in ifilter(other._data.has_key, self, True):
!             data[elt] = value
          return result
  
***************
*** 265,272 ****
          if len(self) > len(other):  # Fast check for obvious cases
              return False
!         otherdata = other._data
!         for elt in self:
!             if elt not in otherdata:
!                 return False
          return True
  
--- 261,266 ----
          if len(self) > len(other):  # Fast check for obvious cases
              return False
!         for elt in ifilter(other._data.has_key, self, True):
!             return False
          return True
  
***************
*** 276,282 ****
          if len(self) < len(other):  # Fast check for obvious cases
              return False
!         selfdata = self._data
!         for elt in other:
!             if elt not in selfdata:
                  return False
          return True
--- 270,274 ----
          if len(self) < len(other):  # Fast check for obvious cases
              return False
!         for elt in ifilter(self._data.has_key, other, True):
                  return False
          return True