[Python-ideas] data structures should have an .any() method
steve at pearwood.info
Sat Sep 5 07:17:05 CEST 2009
On Fri, 4 Sep 2009 08:03:21 pm Nick Coghlan wrote:
> Stefan Behnel wrote:
> > It would therefore be nice to have a common ".any()" method on data
> > structures that would just read an arbitrary item from a container.
> I'd advise against bare name "any" for this, since we already have
> the any() builtin with a completely different meaning. "getany" would
> probably be OK though.
> I'd also advise against using a method for this, since there is a
> reasonable default implementation that can be employed:
> def getany(container)
> if container:
> if isinstance(container, collections.Sequence):
> return container
> for x in container:
> return x
> raise ValueError("No items in container")
> Finally, I'd suggest that any such function would belong in the
> collections module rather than being made a builtin.
Given the above implementation, repeated calls to getany(sequence) will
return the same item each time. Is that what people will expect by a
function that claims to return "any" element of a collection? I suspect
that users will be evenly divided into those who say Yes, those who say
No, and those who say "It depends on what I'm trying to do".
Should it return an arbitrary item, or a random item? Is "the first
item" arbitrary enough? It should be for dicts, which are unordered,
but may not be for lists.
I think the answers to these questions are too application-specific for
any solution or solutions to go into the standard library. It probably
belongs in the cookbook as a handful of related recipes.
More information about the Python-ideas