valor vacia una tamaño rangos lista len función funcion for establecer español diccionario crear buscar python list reduce

vacia - ¿Cómo se aplica ''o'' a todos los valores de una lista en Python?



función range de python (5)

¿Cómo se aplica ''o'' a todos los valores de una lista en Python? Estoy pensando algo así como:

or([True, True, False])

o si fue posible:

reduce(or, [True, True, False])


La función incorporada hace lo que quieras:

>>> any([True, True, False]) True >>> any([False, False, False]) False >>> any([False, False, True]) True

any tiene la ventaja de reduce atajo de la prueba para los artículos posteriores en la secuencia una vez que encuentra un valor verdadero. Esto puede ser muy útil si la secuencia es un generador con una costosa operación detrás de él. Por ejemplo:

>>> def iam(result): ... # Pretend this is expensive. ... print "iam(%r)" % result ... return result ... >>> any((iam(x) for x in [False, True, False])) iam(False) iam(True) True >>> reduce(lambda x,y: x or y, (iam(x) for x in [False, True, False])) iam(False) iam(True) iam(False) True

Si la versión de Python no tiene any() , all() instrucciones internas, entonces se implementan fácilmente ya que Guido van Rossum sugirió :

def any(S): for x in S: if x: return True return False def all(S): for x in S: if not x: return False return True


Nadie lo ha mencionado, pero " or " está disponible como una función en el módulo de operador:

from operator import or_

Entonces puedes usar reduce como arriba.

Sin embargo, siempre aconsejaría a " any " en pitones más recientes.


Puedes hacerlo:

reduce(lambda a,b: a or b, [True, True, False])


reducir debería hacerlo por usted, ¿no es así?

>>> def _or(x, y): ... return x or y ... >>> reduce(_or, [True, True, False]) True


>>> all([True,False,True]) False >>> any([True,False,True]) True

Python 2.5 y versiones posteriores ( documentación )