I second this as being useful.
However the “pythonic” way (whatever that means nowadays) is to do a for break else loop, which I think is kinda difficult to read as you need to make a few assumptions.
On 27 Jul 2020, at 20:06, Noam Yorav-Raphael <email@example.com> wrote:
_______________________________________________Python-Dev mailing list -- firstname.lastname@example.orgTo unsubscribe send an email to email@example.com://mail.python.org/mailman3/lists/python-dev.python.org/Message archived at https://firstname.lastname@example.org/message/D52MPKLIN4VEXBOCKVMTWAK66MAOEINY/Code of Conduct: http://python.org/psf/codeofconduct/
There's a simple function that I use many times, and I think may be a good fit to be added to itertools. A function that gets an iterator, and if it has exactly one element returns it, and otherwise raises an exception. This is very useful for cases where I do some sort of query that I expect to get exactly one result, and I want an exception to be raised if I'm wrong. For example:
jack = one(p for p in people if p.id
This is my implementation:
it = iter(iterable)
r = next(it)
raise ValueError("Iterator is empty")
raise ValueError("Iterator has more than one item")
What do you think?