[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