Maison >développement back-end >Tutoriel Python >Pourquoi « not in » ne fonctionne-t-il pas comme prévu avec les tuples en Python ?

Pourquoi « not in » ne fonctionne-t-il pas comme prévu avec les tuples en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 09:20:03455parcourir

Why Doesn't

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn