[Python-ideas] Add single() to itertools
mistersheik at gmail.com
Thu Nov 2 08:28:20 EDT 2017
This request is called "one" in more-itertools:
It raises ValueError as Steve suggested.
On Monday, October 30, 2017 at 8:34:26 AM UTC-6, Guido van Rossum wrote:
> This is a key example of a case where code speaks. Can you write an
> implementation of how you would want single() to work in Python code?
> On Mon, Oct 30, 2017 at 2:49 AM, Ivan Pozdeev via Python-ideas <
>>> If I have understood your use-case, you have a function that returns a
>>> list of results (or possibly an iterator, or a tuple, or some other
>>> print(search(haystack, needle))
>>> # prints ['bronze needle', 'gold needle', 'silver needle']
>>> There are times you expect there to be a single result, and if there are
>>> multiple results, that is considered an error. Am I correct so far?
>>> If so, then sequence unpacking is your friend:
>>> result, = search(haystack, needle)
>>> I *think* this will solve your problem.
>>> If not, can you please explain what "single()" is supposed to do, why it
>>> belongs in itertools, and show an example of how it will work.
>> That works. Too arcane in my book though (and others' too according to
>> https://stackoverflow.com/a/473337/648265), and the error messages are
>> cryptic in this use case.
>> It also cannot be a part of an expression, unlike next().
>> The initial post on the above link summarizes the suggested
>> implementation pretty well.
>> Python-ideas mailing list
>> Code of Conduct: http://python.org/psf/codeofconduct/
> --Guido van Rossum (python.org/~guido)
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Python-ideas