human
I wrote the below code

    class myiter:
        def __init__(self, it):
            self.it = it
            self.key = self.value = None
            self.iternext()
        def iternext(self):
            try:
                self.value = next(self.it)
                self.key = func(self.value)
            except StopIteration:
                self.value = self.key = None
        def __call__(self, key):
            retval = None
            if (key == self.key):
                retval = self.value
                self.iternext()
            elif (self.key and (key > self.key)):
                raise ValueError(u'Iterator    has    been    left    behind')
            return retval
    iters = [myiter(it) for it in iterables]
    minvals = minkey = True
    while True:
        minvals = [_f for _f in [it.key for it in iters] if _f]
        if minvals:
            minkey = min(minvals)
            (yield (minkey, [it(minkey) for it in iters]))
        else:
            break

What's a good function header?
assistant
#Here's a good function header.

def align_iterators(func, *iterables):