On 07.10.12 22:18, Richard Oudkerk wrote:
That means that all but the last return value is ignored. Why is the last return value any more important than the earlier ones?
Because I think the last return value more useful for idiom lookahead = next(iterator) process(lookahead) iterator = itertools.chain([lookahead], iterator)
ISTM it would make just as much sense to do
def chain(*iterables): values = [] for it in iterables: values.append(yield from it) return values
It changes the behavior for iterators. And now more difficult to get a generator which yields and returns the same values as the original. We need yet one wrapper. def lastvalue(generator): return (yield from generator)[-1] iterator = lastvalue(itertools.chain([lookahead], iterator)) Yes, it can work.