Maison > Article > interface Web > Décrire en détail les astuces et les pièges liés à l'utilisation des sélecteurs
Expliquez les astuces et les pièges de l'utilisation des sélecteurs is et où
En tant que sélecteurs couramment utilisés, is et où sont souvent rencontrés lors de l'écriture de code. Leurs fonctions sont similaires et ils sont tous deux utilisés pour filtrer les données, mais il existe certaines techniques et pièges auxquels il faut prêter attention lors de leur utilisation.
Tout d’abord, jetons un coup d’œil à l’utilisation du sélecteur is. La fonction du sélecteur is est de sélectionner des éléments avec des valeurs d'attribut spécifiques de l'objet.
L'exemple de code est le suivant :
data = [{'name':'John', 'age':25}, {'name':'Amy', 'age':22}, {'name':'Tom', 'age':27}] result = [person for person in data if person['name'] == 'John'] print(result)
Résultat d'exécution :
[{'name': 'John', 'age': 25}]
Dans l'exemple, nous utilisons le sélecteur is pour filtrer les informations de la personne nommée John dans les données. Grâce à la compréhension de listes, nous pouvons filtrer rapidement les éléments qui remplissent les conditions.
Cependant, il y a un problème à noter lors de l'utilisation du sélecteur is : le sélecteur is compare les références, pas les valeurs. Si nous modifions légèrement l'exemple de code comme suit :
data = [{'name':'John', 'age':25}, {'name':'Amy', 'age':22}, {'name':'John', 'age':27}] result = [person for person in data if person['name'] == 'John'] print(result)
Résultats d'exécution :
[{'name': 'John', 'age': 25}, {'name': 'John', 'age': 27}]
Vous pouvez voir que bien que notre condition de filtrage concerne les personnes nommées John, les résultats filtrés incluent en fait deux personnes nommées John people. En effet, le sélecteur compare les adresses mémoire, pas les valeurs.
Pour éviter ce problème, nous pouvons utiliser le sélecteur Where. Le sélecteur Where compare les valeurs et est plus flexible.
L'exemple de code est le suivant :
import operator data = [{'name':'John', 'age':25}, {'name':'Amy', 'age':22}, {'name':'John', 'age':27}] result = [person for person in data if operator.eq(person['name'], 'John')] print(result)
Résultats d'exploitation :
[{'name': 'John', 'age': 25}]
Dans l'exemple, nous utilisons le sélecteur Where pour comparer les valeurs des éléments via la fonction Operator.eq afin de filtrer les informations sur les personnes nommées John. Seul le premier élément qui satisfait à la condition est inclus dans le résultat.
Lorsque vous utilisez le sélecteur Where, veuillez noter que vous devez importer le module opérateur et utiliser les fonctions du module pour effectuer des opérations de comparaison. De cette façon, nous pouvons comparer avec précision les valeurs des éléments et éviter les pièges du sélecteur is.
En programmation réelle, il est très important de choisir le sélecteur approprié en fonction des besoins réels. Si vous devez comparer des valeurs, vous devez utiliser le sélecteur Where ; si vous devez comparer des références, vous pouvez utiliser le sélecteur is.
Pour résumer, les sélecteurs sont-ils et où sont-ils couramment utilisés pour filtrer les données. Lors de l'utilisation, veuillez noter que le sélecteur is compare les références, tandis que le sélecteur Where compare les valeurs. Choisissez le sélecteur approprié en fonction des besoins réels, faites attention aux techniques d'utilisation et évitez les pièges, afin de mieux écrire du code de haute qualité.
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!