def check_numeric_list_limit(limit, spec, limit_field, description=None, spec_field=None):
    """
    Checks a numeric limit given a spec and field name where the value in the spec is a 
    list of numbers.

    Args:
        limit: The limit definition to uses as the evaluation criteria
        spec: The spec to be evaulated
        limit_field: The name of the field in teh limit to be checked.
        description: optional. A human-readble name of the limit to be used in error messages. Defaults to value of limit_field.
        spec_field: optional. The name of the field in the spec to check. Defaults to value of limit_field.
    Returns:
        List of error strings if limit is not passed. Empty list otherwise.
    """
    errors = []
    if description is None:
        description = limit_field
    if spec_field is None:
        spec_field = limit_field
    try:
        contains = spec[spec_field] in limit[limit_field]["match"]
        invert = limit[limit_field].get("invert", False)
        message = limit[limit_field].get("fail-message", "{0} not within limit".format(description))
        if invert:
           if contains:
               errors.append(message)
        else:
           if not contains:
               errors.append(message)
    except KeyError:
        pass  # Don't care if not there.
    
    return errors