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

Rodrigo Dias Arruda Senra rodsenra at gpr.com.br
Fri Mar 11 15:58:47 CET 2005


[ Pierre Barbier de Reuille ]:
> They are called "sometrue" and "alltrue" ... IMHO, it explicits more 
> what it means :
> 
>   alltrue(i<5 for i in l)
>   sometrue(i<5 for i in l)
+1

[ from a comment in GvR's blog ]
 > > Why not,
 > > if True in (x > 42 for x in S):
 > > instead of "any" and why not
 > > if not False in (x > 42 for x in S):
 > > instead of "all"?
 >
 > Because "any" and "all" have shortcut semantics (they
 > return as soon as they can determine the final result).


[ Guido ]:
----------
 > See my blog:
 > http://www.artima.com/forums/flat.jsp?forum=106&thread=98196
 > Do we even need a PEP ?

In the absence of a PEP, soon will see in c.l.p discussions like:

"""
  For completeness sake shouldn't there be a optimiztion
  version for  nonetrue() ?

  def nonetrue(S):
      for x in S:
          if x:
              return False
          return True

  why not allfalse() ?
  Due to the previous use of sometrue(), guess it becomes
  easier to remeber nonetrue() than allfalse().

  One may argue for aliasing(nonetrue, allfalse), and we are
  back to _builtin pollution_.
"""

So, people might fallback to any() and all(),realising that:

     '''not all()''' meaning somefalse()

     '''not any()''' meaning nonetrue()==allfalse()

All I'm saying: +1 for the PEP.


OFF-TOPIC:

It is curious though that we choose to read an *implicit*
True in [all(), any()] instead of an implicit False.

I guess that is a moral or ethical choice coming from the Human
realm, favouring Truth instead of Falsity. But that difference
does not hold in the Boolean realm <wink>.

best regards,
Senra

-- 
Rodrigo Senra
MSc Computer Engineer     rodsenra at gpr.com.br
GPr Sistemas Ltda       http://www.gpr.com.br



More information about the Python-Dev mailing list