Supposons que j'ai une liste qui peut avoir un ou deux éléments:
mylist=["important", "comment"]
ou
mylist=["important"]
Ensuite, je veux avoir une variable pour fonctionner comme un indicateur en fonction de cette 2ème valeur existante ou non.
Quelle est la meilleure façon de vérifier si le 2ème élément existe?
Je l'ai déjà fait en utilisant len(mylist)
. Si c'est 2, c'est très bien. Cela fonctionne mais je préférerais savoir si le 2ème champ est exactement "commentaire" ou non.
Je suis alors arrivé à cette solution:
>>> try:
... c=a.index("comment")
... except ValueError:
... print "no such value"
...
>>> if c:
... print "yeah"
...
yeah
Mais semble trop long. Pensez-vous que cela peut être amélioré? Je suis sûr qu'il peut mais ne parvient pas à trouver un moyen approprié de Python Data Structures Documentation .
Qu'en est-il de:
len(mylist) == 2 and mylist[1] == "comment"
Par exemple:
>>> mylist = ["important", "comment"]
>>> c = len(mylist) == 2 and mylist[1] == "comment"
>>> c
True
>>>
>>> mylist = ["important"]
>>> c = len(mylist) == 2 and mylist[1] == "comment"
>>> c
False
Vous pouvez utiliser l'opérateur in
:
'comment' in mylist
ou, si la position est importante, utilisez une tranche:
mylist[1:] == ['comment']
Ce dernier fonctionne pour les listes de taille un, deux ou plus, et est uniquement True
si la liste est de longueur 2 et le deuxième élément est égal à 'comment'
:
>>> test = lambda L: L[1:] == ['comment']
>>> test(['important'])
False
>>> test(['important', 'comment'])
True
>>> test(['important', 'comment', 'bar'])
False
Utilisez l'opérateur in
:
>>> mylist=["important", "comment"]
>>> "comment" in mylist
True
Ah! Vous avez manqué la partie où vous avez dit, vous voulez juste "comment"
pour être le 2e élément. Pour cela, vous pouvez utiliser:
len(mylist) == 2 and mylist[1] == "comment"