
It's all been said. There is a PEP being written, so we should all make sure our arguments are well represented there, and let the decision be made. But in all the discussion about usability and discoverability, etc, please keep in mind that zip() is a builtin, and zip_longest() and any other function written will be in the itertools module. All the tab completion, etc in the world does not help when the functions are in different namespaces. Also please keep in mind that the members of this list, and the python-dev list, are not representative of most Python users. Certainly not beginners but also many (most?) fairly active, but more "casual" users. Folks on this list are very invested in the itertools module and iteration in general. But many folks write a LOT of code without every touching iterttools. Honestly, a lot of it is pretty esoteric (zip_longests is not) -- I need to read the docs and think carefully before I know what they even do. Example: Here's the docstring for itertools.chain: chain(*iterables) --> chain object Return a chain object whose .__next__() method returns elements from the first iterable until it is exhausted, then elements from the next iterable, until all of the iterables are exhausted. I can tell you that I have no idea what that means -- maybe folks wth CS training do, but that is NOT most people that use Python. And here's the full docs: Make an iterator that returns elements from the first iterable until it is exhausted, then proceeds to the next iterable, until all of the iterables are exhausted. Used for treating consecutive sequences as a single sequence. Roughly equivalent to: def chain(*iterables): # chain('ABC', 'DEF') --> A B C D E F for it in iterables: for element in it: yield element OK, that's better, though only because there's a nice simple example there, and ytou have to go looking for them. Anyway, inscrutable docstrings are another issue, and one I keep hoping I'll find the time to try to address one day, but the point is : "Folks will go look in itertools when zip() doesn't do what they want " just does not apply to most people. Finally, yes, a pointer to itertools in the docstring would help a lot, but yes, it's still a heavier lift than adding a flag, 'cause you have to then go and import a new module, etc. -CHB -- Christopher Barker, PhD Python Language Consulting - Teaching - Scientific Software Development - Desktop GUI and Web Development - wxPython, numpy, scipy, Cython