def delete(self, indx): """Remove the point in the index position. :: >>> line = Line([(0, 0), (1, 1), (2, 2)]) >>> line.delete(-1) >>> line Line([Point(0.000000, 0.000000), Point(1.000000, 1.000000)]) .. """ if indx < 0: # Handle negative indices indx += self.c_points.contents.n_points if indx >= self.c_points.contents.n_points: raise IndexError('Index out of range') libvect.Vect_line_delete_point(self.c_points, indx)
def remove(self, pnt): """Delete point at given index and move all points above down, using `Vect_line_delete_point` C function. :: >>> line = Line([(0, 0), (1, 1), (2, 2)]) >>> line.remove((2, 2)) >>> line[-1] Point(1.000000, 1.000000) .. """ for indx, point in enumerate(self.__iter__()): if pnt == point: libvect.Vect_line_delete_point(self.c_points, indx) return raise ValueError('list.remove(x): x not in list')
def pop(self, indx): """Return the point in the index position and remove from the Line. :: >>> line = Line([(0, 0), (1, 1), (2, 2)]) >>> midle_pnt = line.pop(1) >>> midle_pnt Point(1.000000, 1.000000) >>> line Line([Point(0.000000, 0.000000), Point(2.000000, 2.000000)]) .. """ if indx < 0: # Handle negative indices indx += self.c_points.contents.n_points if indx >= self.c_points.contents.n_points: raise IndexError('Index out of range') pnt = self.__getitem__(indx) libvect.Vect_line_delete_point(self.c_points, indx) return pnt