Quant à votre première question: ce code est parfaitement bien et devrait fonctionner s'il item
est égal à l'un des éléments à l'intérieur myList
. Peut-être que vous essayez de trouver une chaîne qui ne correspond pas exactement à l'un des éléments ou que vous utilisez une valeur flottante qui souffre d'inexactitude.
Quant à votre deuxième question: il existe en fait plusieurs façons possibles de "trouver" des choses dans les listes.
Vérifier si quelque chose est à l'intérieur
Voici le cas d'utilisation que vous décrivez: Vérifier si quelque chose se trouve dans une liste ou non. Comme vous le savez, vous pouvez utiliser l' in
opérateur pour cela:
3 in [1, 2, 3] # => True
Filtrer une collection
Autrement dit, trouver tous les éléments dans une séquence qui remplissent une certaine condition. Vous pouvez utiliser la compréhension de liste ou des expressions génératrices pour cela:
matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)
Ce dernier renverra un générateur que vous pouvez imaginer comme une sorte de liste paresseuse qui ne sera construite que lorsque vous l'itérerez. Soit dit en passant, le premier est exactement équivalent à
matches = filter(fulfills_some_condition, lst)
en Python 2. Ici, vous pouvez voir des fonctions d'ordre supérieur à l'œuvre. En Python 3, filter
ne renvoie pas de liste, mais un objet de type générateur.
Trouver la première occurrence
Si vous ne voulez que la première chose qui corresponde à une condition (mais vous ne savez pas encore ce que c'est), c'est bien d'utiliser une boucle for (éventuellement en utilisant également la else
clause, qui n'est pas vraiment bien connue). Vous pouvez aussi utiliser
next(x for x in lst if ...)
qui retournera la première correspondance ou lèvera un StopIteration
si aucun n'est trouvé. Vous pouvez également utiliser
next((x for x in lst if ...), [default value])
Recherche de l'emplacement d'un élément
Pour les listes, il y a aussi la index
méthode qui peut parfois être utile si vous voulez savoir où se trouve un certain élément dans la liste:
[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError
Cependant, notez que si vous avez des doublons, .index
renvoie toujours l'index le plus bas: ......
[1,2,3,2].index(2) # => 1
S'il y a des doublons et que vous voulez tous les index, vous pouvez utiliser à la enumerate()
place:
[i for i,x in enumerate([1,2,3,2]) if x==2] # => [1, 3]
myList
.