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

Barbara Streisand
Libérer: 2024-10-30 09:20:03
original
382 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!