When I need something like this, I usually rop a line on the module
namespace that goes like:

first = lambda x: next(iter(x))


On 30 October 2017 at 23:09, Steven D'Aprano <st...@pearwood.info> wrote:
> On Tue, Oct 31, 2017 at 07:51:02AM +1100, Cameron Simpson wrote:
>
>>  return the(nodes)
>>
>> It's this kind of thing that expresses my intent better than the:
>>
>>  node, = nodes
>>  return node
>>
>> idiom.
>
> If the intent is to indicate that there is only one node, then
> "the(nodes)" fails completely. "The" can refer to plurals as easily as
> singular:
>
> "Wash the dirty clothes."
> (Later) "Why did you only wash one sock?"
>
>
> The simplest implementation of this "single()" function I can think of
> would be:
>
> def single(iterable):
>     result, = iterable
>     return result
>
>
> That raises ValueError if iterable has too few or too many items, which
> I believe is the right exception to use. Conceptually, there's no
> indexing involved, so IndexError would be the wrong exception to use.
> We're expecting a compound value (an iterable) with exactly one item. If
> there's not exactly one item, that's a ValueError.
>
>
>
> --
> Steve
> _______________________________________________
> Python-ideas mailing list
> Python-ideas@python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to