[Python-Dev] Retrieve an arbitrary element from asetwithoutremoving it

Björn Lindqvist bjourne at gmail.com
Mon Nov 9 17:40:11 CET 2009


2009/11/6 Raymond Hettinger <python at rcn.com>:
> [me]
>>
>> Why not write a short, fast get_first() function for your utils directory
>> and be done with it?
>> That could work with sets, mappings, generators, and other containers and
>> iterators.
>> No need to fatten the set/frozenset API for something so trivial and so
>> rarely needed.
>
> Forgot to post the code.  It is short, fast, and easy.  It is explicit about
> handing the case with an empty input.  And it is specific about which value
> it returns (always the first iterated value; not an arbitrary one).  There's
> no guessing about what it does.  It gets the job done.
>
> def first(iterable):
>   'Return the first value from a container or iterable.  If empty, raises
> LookupError'
>   for value in iterable:
>       return value
>   raise LookupError('no first value; iterable is empty')
>
> If desired, it is not hard to change to the last time to return a default
> value or some other exception.

That function is very nice and genericly lisp-like. Couldn't that one
be in the builtins? It would both solve the problem and avoid
fattening the set API.


-- 
mvh Björn


More information about the Python-Dev mailing list