On Sun, Jul 22, 2012 at 9:03 PM, Giampaolo RodolĂ <g.rodola@gmail.com> wrote:
This would be similar to 'key' argument already available for min(), max() and sorted() and would let user decide what must be considered True and what not. Some use cases:
all(a, b, c, ... key=callable)
You're missing some brackets or parens there: all([a, b, c, ...], key=callable) <snip>
Thoughts?
I see negligible advantage over just writing the generator expression directly: all(callable(item) for item in iterable) === all(iterable, key=callable) (which is about comparable to the difference between a map() invocation vs. a list comprehension, and the choice there seems to be largely a matter of taste) min() & max() return the result object satisfying the constraint, so the `key` argument makes sense for when you want to e.g. find the cheapest house rather than the price of the cheapest house. In contrast, any() & all() *always* just return a simple bool result, not the object whose truthiness determined the predicate's result, so `key` would be pointless since the result gets converted to a plain bool anyway (or at least, we can conceptualize the implementation as if it worked that way). Cheers, Chris