Raphael Michel added the comment: Well, I could think of a way to still use repeat() here that also is pretty clean except for the fact that it fails if all inputs to zip_longest are repeat() iterators themselves (which would here lead to an empty iterator while it would otherwise lead to an infinite one):
def zip_longest(*args, **kwds): # zip_longest('ABCD', 'xy', fillvalue='-') --> Ax By C- D- fillvalue = kwds.get('fillvalue') iterators = [iter(it) for it in args] while True: values = [] for i, it in enumerate(iterators): try: values.append(next(it)) except StopIteration: values.append(fillvalue) iterators[i] = repeat(fillvalue) if all(isinstance(it, repeat) for it in iterators): break else: yield tuple(values) Keeping chain() in use here just for the sake of using it is not worth it, I believe. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue31270> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com