示例#1
0
 def __add__(self, other):
     """Returns a new bag containing the contents
     of self and other."""
     result = ArrayBag(self)
     for item in other:
         result.add(item)
     return result
 def add(self, item):
     if self.isEmpty() or self._items[len(self) - 1] < item:
         ArrayBag.add(item)
     else:
         targetIndex = 0
         while item > self._items[targetIndex]:
             targetIndex += 1
         for i in range(len(self), targetIndex, -1):
             self._items[i] = self._items[i - 1]
         self._items[targetIndex] = item
         self._size += 1
示例#3
0
 def add(self, item):
     """Adds item to self."""
     # Empty or last item, call ArrayBag.add
     if self.isEmpty() or item >= self._items[len(self) - 1]:
         ArrayBag.add(self, item)
     else:
         # Search for first item >= new item
         targetIndex = 0
         while item > self._items[targetIndex]:
             targetIndex += 1
         # Open a hole for new item
         for i in range(len(self), targetIndex, -1):
             self._items[i] = self._items[i - 1]
         # Insert item and update size
         self._items[targetIndex] = item
         self._size += 1
 def add(self, item):
     """Adds item to self."""
     # Empty or last item, call ArrayBag.add
     if self.isEmpty() or item >= self._items[len(self) - 1]:
         ArrayBag.add(self, item)
     else:
         # Search for first item >= new item
         targetIndex = 0
         while item > self._items[targetIndex]:
             targetIndex += 1
         # Open a hole for new item
         for i in range(len(self), targetIndex, -1):
             self._items[i] = self._items[i - 1]
         # Insert item and update size
         self._items[targetIndex] = item
         self._size += 1
示例#5
0
def distributeBag(bag):
    redBag = ArrayBag()
    blueBag = ArrayBag()

    # Move the balls to the appropriate bags:

    # <your code>

    for item in bag:

        if (item.getColor() == 'red'):
            redBag.add(item)
        elif (item.getColor() == 'blue'):
            blueBag.add(item)
    bag.clear()

    # Return the 2 bags:
    return (redBag, blueBag)
示例#6
0
 def add(self, item):
     """Adds item to self."""
     # Check array memory here and increase it if necessary
     if len(self) == len(self._items):
         temp = Array(2 * len(self))
         for i in range(len(self)):
             temp[i] = self[i]
         self._items = temp
     # Empty or last item, call ArrayBag.add
     if self.isEmpty() or item >= self._items[len(self) - 1]:
         ArrayBag.add(self, item)
     else:
         # Search for first item >= new item
         targetIndex = 0
         while item > self._items[targetIndex]:
             targetIndex += 1
         # Open a hole for new item
         for i in range(len(self), targetIndex, -1):
             self._items[i] = self._items[i - 1]
         # Insert item and update size
         self._items[targetIndex] = item
         self._size += 1
示例#7
0
 def add(self, item):
     """Adds item to self."""
     # Check array memory here and increase it if necessary
     if len(self) == len(self._items):
         temp = Array(2 * len(self))
         for i in range(len(self)):
             temp[i] = self[i]
         self._items = temp
     # Empty or last item, call ArrayBag.add
     if self.isEmpty() or item >= self._items[len(self) - 1]:
         ArrayBag.add(self, item)
     else:
         # Search for first item >= new item
         targetIndex = 0
         while item > self._items[targetIndex]:
             targetIndex += 1
         # Open a hole for new item
         for i in range(len(self), targetIndex, -1):
             self._items[i] = self._items[i - 1]
         # Insert item and update size
         self._items[targetIndex] = item
         self._size += 1
 def add(self, item):
     """Adds item to self."""
     # Check array memory here and increase it if necessary
     if len(self._items) == len(self):
         new_bag = Array(ArraySortedBag.DEFAULT_CAPACITY * 2)
         for index in range(len(self)):
             new_bag[index] = self._items[index]
         self._items = new_bag
     # Empty or last item, call ArrayBag.add
     if self.isEmpty() or item >= self._items[len(self) - 1]:
         ArrayBag.add(self, item)
     else:
         # Search for first item >= new item
         targetIndex = 0
         while item > self._items[targetIndex]:
             targetIndex += 1
         # Open a hole for new item
         for i in range(len(self), targetIndex, -1):
             self._items[i] = self._items[i - 1]
         # Insert item and update size
         self._items[targetIndex] = item
         self._size += 1
 def add(self, item):
     # 判断是否需要扩容
     if len(self) == len(self._items):
         temp = Array(2 * len(self))
         for i in range(len(self)):
             temp[i] = self._items[i]
         self._items = temp
     if self.isEmpty() or item > self._items[len(self) - 1]:
         ArrayBag.add(self, item)
     else:
         left = 0
         right = len(self) - 1
         # 找到第一个大于等于item的项
         while left < right:
             mid = left + (right - left) // 2
             if self._items[mid] < item:
                 left = mid + 1
             else:
                 right = mid
         # left是第一个大于item的index
         for i in range(len(self), left, -1):
             self._items[i] = self._items[i - 1]
         self._items[left] = item
         self._size += 1
示例#10
0
 def add(self, item):
     """Adds item to self."""
     if not item in self:
         ArrayBag.add(self, item)
示例#11
0
 def add(self, item):
     """Adds item to self if not already in bag."""
     if not item in self:
         ArrayBag.add(self, item)
示例#12
0
    b1.add(25)
    b1.remove(25)
    print("b1.add(25), b1.remove(25): Expect // {} //", b1)
    b1 = bagType(lyst)
    b2 = bagType(b1)
    print("b1=bagType(lyst), b2=bagType(b1), b1==b2: Expect // True //",
          b1 == b2)
    print("b1 is b2: Expect // False //", b1 is b2)
    for item in lyst:
        b1.remove(item)
    print("b1.remove the items in lyst: Expect // {} //", b1)
    print("b2.remove(99): Expect crash with KeyError:")
    b2.remove(99)


if None:
    print("yeah")
b3 = ArrayBag()
b3.add(3)
b3.add(5)
b3Iter = iter(b3)
print(b3Iter)
b3b = next(b3Iter)
b3b = next(b3Iter)
print(b3Iter)
print(b3b)

#test(LinkBag)
test(ArrayBag)
#test(ArraySortedBag)
示例#13
0
 def add(self, item):
     """Adds item to self."""
     if item not in self:
         ArrayBag.add(self, item)
示例#14
0
 def add(self, item):
     """Adds item to the set if it is not in the set."""
     if not item in self:
         ArrayBag.add(self, item)
示例#15
0
文件: arrayset.py 项目: zcking/PyDSA
 def add(self, item):
     """Adds item to self if not already in bag."""
     if not item in self:
         ArrayBag.add(self, item)