valores operaciones logicas funcion exclusivo ejemplos ejemplo declarar booleanos booleanas python

python - operaciones - Cada elemento de la lista es verdadero booleano.



valores booleanos y operaciones logicas (4)

Asumiendo que la función de comparación devuelve un valor booleano, y sabiendo que Verdadero / Falso se convierte en 1/0 en un contexto entero, puede hacer:

values = new_subjects.values() sum(compare(v) for v in values) == len(values) -1

Yo sé eso

all(map(compare,new_subjects.values()))==True

Me diría si cada elemento de la lista es verdadero. Sin embargo, ¿cómo puedo saber si todos los elementos, excepto uno de ellos, son verdaderos?


Cuenta cuántos no son verdaderos:

values = (compare(val) for val in new_subjects.itervalues()) if sum(1 for x in values if not x) == 1: # just one ...


Si quiere decir que es realmente True y no se evalúa como verdadero, ¿puede simplemente contarlos?

>>> L1 = [True]*5 >>> L1 [True, True, True, True, True] >>> L2 = [True]*5 + [False]*2 >>> L2 [True, True, True, True, True, False, False] >>> L1.count(False) 0 >>> L2.count(False) 2 >>>

comprobando solo un falso:

>>> def there_can_be_only_one(L): ... return L.count(False) == 1 ... >>> there_can_be_only_one(L1) False >>> there_can_be_only_one(L2) False >>> L3 = [ True, True, False ] >>> there_can_be_only_one(L3) True >>>

Edición: En realidad esta responde mejor a tu pregunta:

>>> def there_must_be_only_one(L): ... return L.count(True) == len(L)-1 ... >>> there_must_be_only_one(L3) True >>> there_must_be_only_one(L2) False >>> there_must_be_only_one(L1) False


values = map(compare, new_subjects.values()) len([x for x in values if x]) == len(values) - 1

Básicamente, filtra la lista en busca de valores verdaderos y compara la longitud de esa lista con la original para ver si es uno menos.