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
def testResize(): """Tests the resizing of an array-based bag, when space is wasted.""" bag = ArrayBag(range(100)) print("Added 100 items, length of bag =", len(bag)) print("Length of array =", len(bag._items)) for item in range(76): bag.remove(item) print("Removed 76 items, length of bag =", len(bag)) print("Length of array =", len(bag._items)) for item in range(76, 100): bag.remove(item) print("Removed remaining items, length of bag =", len(bag)) print("Length of array =", len(bag._items))
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.""" # 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
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)
def main(): bag1 = ArrayBag([1, 2, 3, 4, 5, 6]) print("bag1 is", bag1) bag2 = ArrayBag([7, 8, 9, 10, 11]) print("bag2 is", bag2) bag1 = bag1 + bag2 print("bag1 after bag1 + bag2 =", bag1, "length =", len(bag1)) sep() for number in range(1, 12): if number in bag1: bag1.remove(number) print("bag1 after removing every number in range(1,12) =", bag1, "length =", (len(bag1))) bag1.remove(0)
def __init__(self, sourceCollection=None): """Sets the initial state of self, which includes the contents of sourceCollection, if it's present.""" ArrayBag.__init__(self, sourceCollection)
def add(self, item): """Adds item to self if not already in bag.""" if not item in self: ArrayBag.add(self, item)
def add(self, item): """Adds item to self.""" if not item in self: ArrayBag.add(self, item)
def __init__(self, sourceCollection=None): """Sets the initial state of self, which includes the contents of sourceCollection, it it's present.""" # Nothing different about the initialization from the parent's ArrayBag.__init__(self, sourceCollection)
def __init__(self, sourceCollection = None): ArrayBag.__init__(self, sourceCollection)
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)
def add(self, item): """Adds item to self.""" if item not in self: ArrayBag.add(self, item)
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)
for item in bag: str(item) print(item) if bag.isEmpty(): print('empty') print() # Test 1: print("Test 1:") bag1 = ArrayBag([ Ball("red", 1), Ball("red", 2), Ball("red", 3), Ball("blue", 1), Ball("blue", 2), Ball("blue", 3) ]) print("Original mixed bag:") printBag(bag1) redBag, blueBag = distributeBag(bag1) print("Red bag:") printBag(redBag) print("Blue bag:") printBag(blueBag) print("Final mixed bag:") printBag(bag1) # Test 2: print("Test 2:")
''' Ricky Cheah Feb 26, 2020 Lab 4 This is a driver function to test the clone method in ArrayBag and LinkedBag classes. ''' from arraybag import ArrayBag from linkedbag import LinkedBag print("Testing clone method on ArrayBag.") arrayBag1 = ArrayBag([2, 3, 4, "abcd"]) print("arrayBag1 is", arrayBag1) print("\nExecuting arrayBag2 = arrayBag1.clone()") arrayBag2 = arrayBag1.clone() print("arrayBag2 is", arrayBag2) print() print("arrayBag2 == arrayBag1:", arrayBag2 == arrayBag1) print("arrayBag2 is arrayBag1:", arrayBag2 is arrayBag1) print("_" * 70) print("Testing clone method on LinkedBag.") linkedBag1 = LinkedBag([4, 5, 6, "defg"]) #element order will be reversed in list print("linkedBag1 is", linkedBag1) print("\nExecuting linkedBag2 = linkedBag1.clone()")