def iterator(self): for i, outer in enumerate(self.outer.iterator()): inner_iterator = self.inner.iterator() alternate = False if self.snake and i % 2: alternate = True # Reverse the inner iterator as in place list inner_iterator = list(inner_iterator) inner_iterator.reverse() for inner in inner_iterator: point = Point() # Insert outer points point.positions.update(outer.positions) point.lower.update(outer.positions) point.upper.update(outer.positions) # Insert inner points point.positions.update(inner.positions) # alternate has lower and upper bound swapped if alternate: point.upper.update(inner.lower) point.lower.update(inner.upper) else: point.upper.update(inner.upper) point.lower.update(inner.lower) # Insert indexes point.indexes = outer.indexes + inner.indexes yield point
def iterator(self): for i in xrange(self.num): point = Point() point.positions[self.name] = self._calc(i) point.lower[self.name] = self._calc(i - 0.5) point.upper[self.name] = self._calc(i + 0.5) point.indexes = [i] yield point