<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def corners(self, order='C'):
 """Return the corner points as a single array. Parameters order : {'C', 'F'}, optional Ordering of the axes in which the corners appear in the output. ``'C'`` means that the first axis varies slowest and the last one fastest, vice versa in ``'F'`` ordering. Returns ------- corners : `numpy.ndarray` Array containing the corner coordinates. The size of the array is ``2^m x ndim``, where ``m`` is the number of non-degenerate axes, i.e. the corners are stored as rows. Examples -------- array([[-1. , 2. , 0. ], [-1. , 2. , 0.5], [-1. , 3. , 0. ], [-1. , 3. , 0.5], [-0.5, 2. , 0. ], [-0.5, 2. , 0.5], [-0.5, 3. , 0. ], [-0.5, 3. , 0.5]]) array([[-1. , 2. , 0. ], [-0.5, 2. , 0. ], [-1. , 3. , 0. ], [-0.5, 3. , 0. ], [-1. , 2. , 0.5], [-0.5, 2. , 0.5], [-1. , 3. , 0.5], [-0.5, 3. , 0.5]]) """

        from odl.discr.grid import RectGrid

        minmax_vecs = [0] * self.ndim
        for axis in np.where(~self.nondegen_byaxis)[0]:
            minmax_vecs[axis] = self.min_pt[axis]
        for axis in np.where(self.nondegen_byaxis)[0]:
            minmax_vecs[axis] = (self.min_pt[axis], self.max_pt[axis])

        minmax_grid = RectGrid(*minmax_vecs)
        return minmax_grid.points(order=order)