next_or_none = lambda a: next(a, None) def izip_large(*iterables): iterators = map(iter, iterables) while iterators: next_item = tuple(map(next_or_none, iterators)) if not any(next_item): return yield next_item for i in izip_large('ABCD', 'xy'): print i