def matching_error(error_list, reason, processor):
    """
    There's a matching error if any error in the list has the same processor and reason associated with it.

    :param error_list: list, of Error objects
    :param reason: str, reason for the error
    :param processor: str, in ['voc', 'methane', 'picarro']
    :return: boolean, True if there's a matching error
    """

    return next((True for err in error_list if
                 (err.email_template.processor == processor and err.reason == reason)), False)