1. Modulo Set

Un porting della struttura dati set per pys60

   1 class Set:
   2 
   3     def __init__(self, iterable = []):
   4         self.__elements = self._set(iterable)
   5         self.__index = -1
   6 
   7     def _set(self, iterable):
   8         s = []
   9         for e in iterable:
  10             if e not in s: s.append(e)
  11         s.sort()
  12         return s
  13 
  14     def __contains__(self, element):
  15         return (element in self.__elements)
  16 
  17     def __iter__(self):
  18         self.__index = -1
  19         return self
  20 
  21     def next(self):
  22         self.__index += 1
  23         try: return self.__elements[self.__index]
  24         except: raise StopIteration
  25 
  26     def __or__(self, aSet):
  27         if isinstance(aSet,Set):
  28             return Set(self.__elements + [e for e in aSet])
  29         else: raise TypeError
  30 
  31     def __and__(self, aSet):
  32         if isinstance(aSet, Set):
  33             return Set([e for e in self.__elements if e in aSet])
  34         else: raise TypeError
  35 
  36     def __sub__(self, aSet):
  37         if isinstance(aSet, Set):
  38            return Set([e for e in self.__elements if e not in aSet])
  39         else: raise TypeError
  40 
  41     def __xor__(self, aSet):
  42         if isinstance(aSet, Set):
  43            return (self-aSet)|(aSet-self)
  44         else: raise TypeError
  45 
  46     def __str__(self):
  47         return "Set%s" % str(tuple(self.__elements))
  48 
  49 if __name__ == "__main__":
  50     a = Set([1,2,3,2,5,1,5,5,1,69,3,5,1,5,1,3])
  51     b = Set([2,8,6,82,4,8,69,5,1])
  52 
  53     print "a = %s" % str(a)
  54     print "b = %s" % str(b)
  55     print "a | b = %s" % str(a|b)
  56     print "a & b = %s" % str(a&b)
  57     print "a - b = %s" % str(a-b)
  58     print "a ^ b = %s" % str(a^b)


CategoryProgetti

CookBook/PyS60 (last edited 2008-07-06 21:06:14 by gennaro)