def listify(to_list, None_as_list=False, prefix=None, padding=None):
    """
    "Listify" the input, hopefully sensibly.

    Parameters
    ----------
    to_list
        Thing to be listified.
    None_as_list : bool
        If False return None if to_list is None, otherwise return [None]
    prefix : str or None
        If str, it will be prepended to every element in list
    padding : int or None
        If int, every integer element will be zero-padded to that length

    Returns
    -------
    List or None

    """
    if to_list is None:
        if None_as_list:
            return [None]
        else:
            return None
    if isinstance(to_list, str):
        if '-' in to_list:
            try:
                start, stop = [int(_x) for _x in to_list.split('-')]
                this_list = list(range(int(start), int(stop) + 1))
            except ValueError:
                this_list = to_list.split(',')
                padding = None
        else:
            try:
                this_list = [int(_x) for _x in to_list.split(',')]
            except ValueError:
                this_list = to_list.split(',')
                padding = None
        if prefix is None:
            return this_list
        if isinstance(padding, int):
            return ['{}{:0{pad}d}'.format(prefix, x, pad=padding) for x in this_list]
        return ['{}{}'.format(prefix, x) for x in this_list]
    if isinstance(to_list, list):
        return to_list
    return [to_list]