Given a list, return right hand cycle direction slice from start to end.

    Example::

        >>> array = [0, 1, 2, 3]
        >>> cycle_slice(array, 1, 3) # from array[1] to array[3]
        [1, 2]

        >>> cycle_slice(array, 3, 1) # from array[3] to array[1]
        [3, 0]

    **中文文档**

def cycle_slice(sliceable, start, end):
    """Given a list, return right hand cycle direction slice from start to end.

    Example::

        >>> array = [0, 1, 2, 3]
        >>> cycle_slice(array, 1, 3) # from array[1] to array[3]
        [1, 2]

        >>> cycle_slice(array, 3, 1) # from array[3] to array[1]
        [3, 0]

    **中文文档**

    """
    if type(sliceable) != list:
        sliceable = list(sliceable)
    length = len(sliceable)

    if length == 0:
        raise ValueError("sliceable cannot be empty!")
    start = start % length
    end = end % length

    if end > start:
        return sliceable[start:end]
    elif end <= start:
        return sliceable[start:] + sliceable[:end]