def slice_list(list_a: list, start: int, end: int):
    """Problem 18: Extract a slice from list.

    Parameters
    ----------
    list_a : list
        The input list
    start : int
        The start of the slice
    end : int
        The end of the slice

    Returns
    -------
    list
        A slice of the initial list

    Raises
    ------
    TypeError
        If the given argument is not of `list` type
    ValueError
        If the values of `start` and / or `end` are invalid

    """
    if not isinstance(list_a, list):
        raise TypeError('The argument given is not of `list` type.')
    if start < 1 or len(list_a) < start:
        raise ValueError('The value of `start` argument is not valid')
    if end < start or len(list_a) < end:
        raise ValueError('The value of `end` argument is not valid')

    return list_a[(start - 1):end]