Un mémo qui a étudié comment effectuer des opérations semblables à ʻArray.prototype.find () `en JavaScript en Python.
javascript trouver()
const fruits = ["apple", "lemon", "melon", "orange"];
const elm = fruits.find(e => e.endsWith("n"));
console.log(elm); // "lemon"
La fonction filter
reçoit une fonction anonyme décrite par une expression lambda comme premier argument et l'applique à chaque élément de la liste du deuxième argument. L'élément pour lequel le résultat est vrai est extrait et un itérateur est renvoyé, de sorte que le résultat peut être obtenu sous forme de liste en appliquant la fonction list
.
fonction de filtre
fruits = ["apple", "lemon", "melon", "orange"]
#fonction de filtre
lst = list(filter(lambda x: x.endswith("n"), fruits))
assert lst == ["lemon", "melon"]
#fonction de filtrage Aucun élément correspondant
lst = list(filter(lambda x: x.endswith("x"), fruits))
assert lst == []
L'application de la fonction next
au lieu de la fonction list
vous donnera le premier élément qui répond aux critères.
Dans le deuxième argument de la fonction filter
, spécifiez None
comme valeur par défaut lorsque l'élément n'est pas trouvé. (Notez que sans cette spécification, une exception StopIteration
sera lancée et le système se terminera anormalement.)
fonction de filtre+rechercher par fonction suivante
#fonction de recherche par filtre
elm = next(filter(lambda x: x.endswith("n"), fruits), None)
assert elm == "lemon"
#fonction de recherche par filtre Aucun élément correspondant
elm = next(filter(lambda x: x.endswith("x"), fruits), None)
assert elm == None
Une expression de générateur est une expression qui définit un générateur dans une notation telle que la notation d'inclusion de liste. Puisqu'un générateur renvoie un itérateur, il peut être passé à la fonction next
.
Type de générateur+rechercher par fonction suivante
#Rechercher par générateur
elm = next((f for f in fruits if f.endswith("n")), None)
assert elm == "lemon"
#Rechercher par expression de générateur Aucun élément correspondant
elm = next((f for f in fruits if f.endswith("x")), None)
assert elm == None
Le premier argument est une expression de générateur. La différence avec la notation d'inclusion de liste est qu'elle est placée entre ()
au lieu de []
.
Type de générateur
(f for f in fruits if f.endswith("x"))
Recommended Posts