[Python-Dev] Adding any() and all()

Phillip J. Eby pje at telecommunity.com
Fri Mar 11 04:05:02 CET 2005


At 06:38 PM 3/10/05 -0800, Bill Janssen wrote:
>Guido,
>
>I think there should be a PEP.  For instance, I think I'd want them to be:
>
>def any(S):
>   for x in S:
>     if x:
>       return x
>   return S[-1]
>
>def all(S):
>   for x in S:
>     if not x:
>       return x
>   return S[-1]
>
>Or perhaps these should be called "first" and "last".

More precisely (since "S" might be an iterator, or empty):

def any(S):
     x = False
     for x in S:
         if x: break
     return x

def all(S):
     x = True
     for x in S:
         if not x: break
     return x

However, "first" and "last" don't make sense to me as names.  First 
what?   Last what?  Actually, "any" and "all" don't make that much sense to 
me either.  I find myself wanting to call them "or" and "and", or maybe 
"or_iter" and "and_iter".  Or perhaps "until_false" or "until_true".  Nah, 
the and/or names make more sense, as they exactly match the behavior of the 
corresponding logical operators, if you could call them as a function.  At 
least, if they took *args anyway.




More information about the Python-Dev mailing list