Se ti stai chiedendo come si può verificare se una lista è vuota in Python sei nel posto giusto: in questo articolo scopriamo come risolvere questo problema grazie al concetto della booleanicità implicita.
Per certi versi Python è contro intuitivo.
Ciao mi chiamo Lorenzo Neri e sono un informatico: realizzo contenuti per aiutare le persone a padroneggiare l’arte del nuovo millennio, ovvero l’informatica!
Ti può essere capitato diverse volte di avere a che fare con una lista: è vuota, ma vuoi verificarlo.
Per esempio:
lista = []
Siamo d’accordo entrambi che questa lista non abbia alcun elemento al suo interno: perciò è vuota.
Purtroppo, ciò che verrebbe spontaneo fare, sarebbe un controllo di questo tipo:
>>> lista == None
>>> False
Il concetto di “None” in Python non funziona troppo bene in questo caso, anzi: la lista non è prettamente “None”, ma è semplicemente vuota.
Per questo, dicevo all’inizio che Python è alquanto contro intuitivo.
Allora come possiamo verificare se una lista è vuota in Python?
Tramite l’operatore “not”.
Booleanicità Implicita
Finalmente eccoci a questi due brutti termini in tecnichese che ho scritto ad inizio articolo.
È giunta l’ora di spiegarti cosa intendo con “Python è contro intuitivo per certi aspetti”.
La booleanicità implicita per cui ti invito caldamente ad approfondire sulla guida ufficiale di Python, consiste in termini stretti se “stiamo chiedendo a Python la verità”: in questo caso la lista è vuota, ma non “None”.
Di per sé infatti, tramite l’operatore “not” stiamo chiedendo a Python:
“Caro Python, la lista non è piena: dico bene?”
E la risposta, che ci permette di verificare se la lista è davvero vuota in Python è qua sotto:
lista = []
if not lista:
print("la lista è vuota")
Oppure se stai operando direttamente da terminale:
>>> lista = []
>>> not lista
>>> True
Questo modo di operatore lo riconosco: è parecchio “Pythonico”.
Cosa c’è di “Pythonico” nel verificare se una lista è vuota.
Per “Pythonico” intendo proprio questo concetto non del tutto immediato di “chiedere la verità a Python”, cosa differente dal “chiedere un’eguaglianza a Python”.
Torniamo all’esempio che abbiamo fatto prima, anzi: al primo.
>>> lista = []
>>> lista == None
>>> False
Se ragioni sul senso stretto della frase “chiedere un’eguaglianza a Python” è quello che effettivamente stiamo provando a fare: ma la lista abbiamo appurato che non è None, è vuota.
Invece, “chiedere la verità a Python” nel nostro caso si intende quello che è racchiuso dalla soluzione che abbiamo visto assieme prima.
Tramite:
>>> lista = []
>>> not lista
>>> True
Stai chiedendo a tutti gli effetti a Python: “Python, ma quindi il contrario di ‘lista’ quindi ‘non lista’ è qualcosa di pieno?”.
E la risposta è ovviamente “True”: perché il contrario di una lista vuota, è una lista piena.
“Negando” la lista, la stai comparando a una lista piena.
Assurdo vero?