'Runs through each value and transform it with a mapped function.'

def __call__(self, values):

    values = product(values, self._map)
    for value in map(self._mapped_func, filter(self._cmp_filter, values)):
        if (isinstance(value, tuple) and (len(value) == 2)):
            (yield value)
        else:
            try:
                for __ in value:
                    (yield __)
            except TypeError:
                continue
