<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _get_indices(values, selected, tolerance):
 """Get indices based on user-selected values. Parameters values : ndarray (any dtype) values present in the axis. selected : ndarray (any dtype) or tuple or list values selected by the user tolerance : float avoid rounding errors. Returns ------- idx_data : list of int indices of row/column to select the data idx_output : list of int indices of row/column to copy into output Notes ----- This function is probably not very fast, but it's pretty robust. It keeps the order, which is extremely important. If you use values in the self.axis, you don't need to specify tolerance. However, if you specify arbitrary points, floating point errors might affect the actual values. Of course, using tolerance is much slower. Maybe tolerance should be part of Select instead of here. """

    idx_data = []
    idx_output = []
    for idx_of_selected, one_selected in enumerate(selected):

        if tolerance is None or values.dtype.kind == 'U':
            idx_of_data = where(values == one_selected)[0]
        else:
            idx_of_data = where(abs(values - one_selected) <= tolerance)[0] # actual use min

        if len(idx_of_data) > 0:
            idx_data.append(idx_of_data[0])
            idx_output.append(idx_of_selected)

    return idx_data, idx_output