def convert_numeric_list(str_list):
    """
    try to convert list of string to list of integer(preferred) or float

    :param str_list: list of string
    :return: list of integer or float or string
    """
    assert isinstance(str_list, list)
    if not str_list:
        return str_list
    try:
        return list(map(int, str_list))
    except ValueError:
        try:
            return list(map(float, str_list))
        except ValueError:
            return str_list
