Come restituire 'false' perché tutti gli elementi sono 'false'?Verificare se tutti gli elementi di un elenco Python sono False
Il dato lista è:
data = [False, False, False]
Come restituire 'false' perché tutti gli elementi sono 'false'?Verificare se tutti gli elementi di un elenco Python sono False
Il dato lista è:
data = [False, False, False]
Utilizzando any
:
>>> data = [False, False, False]
>>> not any(data)
True
any
restituisce true se non c'è alcun valore di verità nella iterabile.
Fondamentalmente ci sono due funzioni che trattano un iterabile e restituiscono Vero o Falso a seconda di quali valori di valori booleani della sequenza valgono.
all(iterable)
restituisce True se tutti gli elementi del iterable
sono considerati come veri valori (come reduce(operator.and_, iterable)
).
any(iterable)
restituisce Vero se almeno un elemento di iterable
è un valore vero (di nuovo, utilizzando elementi funzionali, reduce(operator.or_, iterable)
).
Utilizzando la funzione all
, è possibile mappare operator.not_
sopra la vostra lista o semplicemente costruire una nuova sequenza con i valori negati e verificare che tutti gli elementi della nuova sequenza sono vere:
>>> all(not element for element in data)
Con il any
funzione, è possibile verificare che almeno un elemento è vero e quindi nega il risultato in quanto è necessario per tornare False
se c'è un vero e proprio elemento:
>>> not any(data)
Secondo la legge di De Morgan, queste due varianti restituiranno lo stesso risultato, ma preferirei l'ultima (che usa any
) perché è più breve, più leggibile (e può essere intuitivamente intesa come "non c'è un vero valore nei dati ") e più efficiente (dal momento che non si creano sequenze aggiuntive).
La soluzione 'any()' si interromperà non appena trova un valore True e quindi di solito sarà più veloce. –
Andiamo, ragazzi, ha chiesto di restituire Vero se c'era qualche Vero. Dicendo lo stesso, False quando tutti sono falsi.
any(data)
Dovrebbe essere tutto? – Ajay
@Ajay, Per usare 'all':' tutto (non x per x nei dati) ' – falsetru
sì, tutto dovrebbe essere FALSO. – jean