Maison > Article > développement back-end > Pourquoi « not in » ne fonctionne-t-il pas comme prévu avec les tuples en Python ?
Vérification de l'absence d'un élément dans une liste à l'aide de Python
En Python, vérifier si un élément n'est pas présent dans une liste peut être réalisé via le 'pas dans' l'opérateur. Cependant, un écueil courant survient lorsque l'on travaille avec des listes de tuples.
Code initial :
Dans le code fourni :
if curr_x -1 > 0 and (curr_x-1 , curr_y) not in myList: # Do Something
Le programmeur a l'intention d'exécuter la branche 'if' uniquement si le tuple spécifique (curr_x-1, curr_y) n'est pas dans myList. Cependant, le code semble mal fonctionner.
Cause du problème :
Le problème ne provient pas de l'expression logique (curr_x-1 , curr_y) qui n'est pas dans maListe . Cette expression est correctement évaluée à True si le tuple est absent de la liste et False s'il est présent, comme démontré dans ces exemples :
>>> 3 not in [2, 3, 4] False >>> 3 not in [4, 5, 6] True
Tuples vs. Listes :
Le bug réside probablement ailleurs dans le code. Contrairement aux listes, les tuples sont immuables en Python. Cela signifie qu'une fois créé, un tuple ne peut plus être modifié. Si vous tentez de le modifier, une TypeError sera générée, ce qui peut perturber le fonctionnement de l'opérateur 'not in'.
Solution :
Pour éviter tout potentiel problèmes, assurez-vous que les tuples de la liste et celui dont vous vérifiez l'absence restent inchangés tout au long du code. S'ils doivent être modifiés, pensez à utiliser des listes au lieu de tuples.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!