Maison > Article > développement back-end > Comment tester l'appartenance de plusieurs valeurs dans une liste Python ?
Test d'appartenance pour plusieurs valeurs dans une liste
Question :
Comment tester si plusieurs valeurs sont membres d'une liste en Python ? Le résultat attendu est de renvoyer une valeur booléenne indiquant l'appartenance à chaque valeur, mais l'approche actuelle produit un résultat inattendu.
Explication :
L'extrait de code fourni : ' a', 'b' dans ['b', 'a', 'foo', 'bar'] ne fonctionne pas comme prévu car Python l'interprète comme un tuple plutôt que comme un test d'appartenance pour des valeurs individuelles.
Réponse :
Pour tester correctement l'appartenance de plusieurs valeurs dans une liste, utilisez l'expression suivante :
<code class="python">all(x in ['b', 'a', 'foo', 'bar'] for x in ['a', 'b'])</code>
Cela retournera True si toutes les valeurs de la deuxième liste sont membres de la première liste et False sinon.
Autres options :
Utilisation des ensembles :
<code class="python">set(['a', 'b']).issubset(set(['a', 'b', 'foo', 'bar'])) {'a', 'b'} <= {'a', 'b', 'foo', 'bar'}</code>
Cette méthode fonctionne bien lorsque les éléments de la liste peuvent être hachés, mais elle peut s'avérer inefficace si les listes sont volumineuses.
Tests de vitesse :
Les résultats du benchmark s'affichent que le test de sous-ensemble (utilisant des ensembles) est généralement plus rapide que l'expression all, mais la différence n'est pas significative à moins que les listes ne soient petites et que l'opération de sous-ensemble soit utilisée avec des ensembles. Cependant, si les éléments des listes ne sont pas hachables ou si les listes sont volumineuses, l'expression all peut être plus efficace.
Conclusion :
Utilisation de l'expression all est généralement une bonne pratique pour tester plusieurs valeurs dans une liste, en particulier lorsque les éléments ne sont pas hachables et lorsque l'efficacité est un problème. Si les éléments sont hachables et que les listes sont petites, le test de sous-ensemble peut offrir un léger avantage en termes de vitesse.
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!