def delist(list_obj):
    """
    Returns a copy of `list_obj` with all empty lists and tuples removed.

    Parameters
    ----------
    list_obj : list
        A list object that requires its empty list/tuple elements to be
        removed.

    Returns
    -------
    delisted_copy : list
        Copy of `list_obj` with all empty lists/tuples removed.

    """
    if type(list_obj) != list:
        raise TypeError("Input argument 'list_obj' is not of type 'list'!")
    delisted_copy = list(list_obj)
    off_dex = len(delisted_copy) - 1
    for i, element in enumerate(reversed(delisted_copy)):
        if isinstance(element, list) and element == []:
            delisted_copy.pop(off_dex - i)
        elif isinstance(element, tuple) and element == ():
            delisted_copy.pop(off_dex - i)
    return delisted_copy
