Quelle est la meilleure façon/la plus efficace de vérifier si toutes les valeurs de Tuple? Dois-je parcourir tous les éléments du tuple et vérifier ou existe-t-il un moyen encore meilleur?
Par exemple:
t1 = (1, 2, 'abc')
t2 = ('', 2, 3)
t3 = (0.0, 3, 5)
t4 = (4, 3, None)
En vérifiant ces n-uplets, chaque Tuple, à l'exception de t1
, devrait renvoyer True, ce qui signifie qu'il existe une valeur vide.
P.S. il y a cette question: Teste si Tuple ne contient que des valeurs None avec Python , mais ne concerne-t-il que des valeurs None
C'est très facile:
not all(t1)
renvoie False
uniquement si toutes les valeurs dans t1
sont non-vide/non nul et non pas None
. all
court-circuits, il suffit donc de vérifier les éléments jusqu'au premier élément vide, ce qui le rend très rapide.
Une réponse utilisant tout a été fournie:
not all(t1)
Cependant, dans un cas comme t3, cela retournera True car l'une des valeurs est 0:
t3 = (0.0, 3, 5)
Le mot clé intégré "all" vérifie si toutes les valeurs d'une variable donnée sont des valeurs qui donnent un booléen négatif (False). 0, 0.0, '' et None sont évalués à False.
Si vous souhaitez uniquement tester Aucun (comme le titre de la question le suggère), cela fonctionne:
any(map(lambda x: x is None, t3))
Cela renvoie True si l'un des éléments de t3 est None, ou False si aucun d'entre eux ne l'est.
Si par hasard voulez vérifier s'il y a une valeur vide dans un Tuple contenant des tuples comme ceux-ci:
t1 = (('', ''), ('', ''))
t2 = ((0.0, 0.0), (0.0, 0.0))
t3 = ((None, None), (None, None))
vous pouvez utiliser ceci:
not all(map(lambda x: all(x), t1))
Sinon, si vous voulez savoir s'il existe au moins une valeur positive, utilisez ceci:
any(map(lambda x: any(x), t1))
Pour votre cas spécifique, vous pouvez utiliser la fonction all()
, elle vérifie que toutes les valeurs d'une liste sont vraies ou fausses, veuillez noter qu'en python None
, les chaînes vides et 0
sont considérées comme fausses.
Alors -
>>> t1 = (1, 2, 'abc')
>>> t2 = ('', 2, 3)
>>> t3 = (0.0, 3, 5)
>>> t4 = (4, 3, None)
>>> all(t1)
True
>>> all(t2)
False
>>> all(t3)
False
>>> all(t4)
False
>>> if '':
... print("Hello")
...
>>> if 0:
... print("Hello")