Maison  >  Article  >  développement back-end  >  Pourquoi \"(\'a\', \'b\') dans [\'b\', \'a\', \'foo\', \'bar\']\" ne fonctionne-t-il pas comme Attendu pour vérifier plusieurs valeurs dans une liste ?

Pourquoi \"(\'a\', \'b\') dans [\'b\', \'a\', \'foo\', \'bar\']\" ne fonctionne-t-il pas comme Attendu pour vérifier plusieurs valeurs dans une liste ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 05:52:02165parcourir

Why Doesn't

Comment vérifier que plusieurs valeurs appartiennent à une liste

Question :

Je dois déterminer si plusieurs valeurs sont présentes dans une liste, mais que le code suivant produit des résultats inattendus :

'a','b' in ['b', 'a', 'foo', 'bar']

Pourquoi ce code ne fonctionne-t-il pas comme prévu et comment puis-je vérifier efficacement l'appartenance de plusieurs valeurs ?

Réponse :

Python interprète l'extrait de code comme une comparaison de tuples, et non comme le test d'appartenance à la liste souhaitée. Pour tester correctement la présence de plusieurs valeurs, utilisez l'approche suivante :

all(x in container for x in items)

Où conteneur est la liste ou une autre séquence à tester, et items est l'itérable contenant les valeurs à trouver.

Considérations supplémentaires :

  • Tests de vitesse : L'approche mentionnée ci-dessus fonctionne bien dans la plupart des cas, mais la conversion de listes en ensembles peut donner des résultats plus rapides. Cependant, cette conversion n’en vaut pas toujours la peine. Les benchmarks montrent que l'avantage en termes de vitesse varie en fonction de la taille et du type de l'entrée.
  • Considérations sur les ensembles : Les ensembles peuvent accélérer les vérifications de confinement des éléments hachables, mais leur création nécessite une surcharge de mémoire. Les générateurs offrent une alternative et peuvent être plus efficaces pour les grands ensembles de données avec des éléments non hachables.

Conclusion :

Le all(x in conteneur for x in items) est une solution polyvalente et efficace pour vérifier l’appartenance de plusieurs valeurs dans une liste ou un autre conteneur. En fonction des besoins spécifiques, la conversion en ensembles ou l'utilisation de générateurs peuvent optimiser davantage les performances.

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