Ein Memo, in dem untersucht wurde, wie Array.prototype.find () -ähnliche Operationen in JavaScript in Python ausgeführt werden.
Javascript finden()
const fruits = ["apple", "lemon", "melon", "orange"];
const elm = fruits.find(e => e.endsWith("n"));
console.log(elm); // "lemon"
Die Filterfunktion empfängt eine anonyme Funktion, die durch einen Lambda-Ausdruck als erstes Argument beschrieben wird, und wendet sie auf jedes Element der Liste des zweiten Arguments an. Das Element, für das das Ergebnis wahr ist, wird extrahiert und ein Iterator zurückgegeben, sodass das Ergebnis durch Anwenden der Funktion "Liste" als Liste erhalten werden kann.
Filterfunktion
fruits = ["apple", "lemon", "melon", "orange"]
#Filterfunktion
lst = list(filter(lambda x: x.endswith("n"), fruits))
assert lst == ["lemon", "melon"]
#Filterfunktion Kein passendes Element
lst = list(filter(lambda x: x.endswith("x"), fruits))
assert lst == []
Wenn Sie die Funktion "Weiter" anstelle der Funktion "Liste" anwenden, erhalten Sie das erste Element, das die Kriterien erfüllt.
Geben Sie im zweiten Argument der Funktion filter`` None
als Standardwert an, wenn das Element nicht gefunden wird. (Beachten Sie, dass ohne diese Spezifikation eine StopIteration-Ausnahme ausgelöst wird und das System abnormal beendet wird.)
Filterfunktion+durch nächste Funktion finden
#durch Filterfunktion finden
elm = next(filter(lambda x: x.endswith("n"), fruits), None)
assert elm == "lemon"
#Suche durch Filterfunktion Kein passendes Element
elm = next(filter(lambda x: x.endswith("x"), fruits), None)
assert elm == None
Ein Generatorausdruck ist ein Ausdruck, der einen Generator in einer Notation wie der Listeneinschlussnotation definiert. Da ein Generator einen Iterator zurückgibt, kann er an die Funktion "next" übergeben werden.
Generatortyp+durch nächste Funktion finden
#Finden Sie durch Generator
elm = next((f for f in fruits if f.endswith("n")), None)
assert elm == "lemon"
#Suche durch Generatorausdruck Kein übereinstimmendes Element
elm = next((f for f in fruits if f.endswith("x")), None)
assert elm == None
Das erste Argument ist ein Generatorausdruck. Der Unterschied zur Listeneinschlussnotation besteht darin, dass sie in "()" anstelle von "[]" eingeschlossen ist.
Generatortyp
(f for f in fruits if f.endswith("x"))
Recommended Posts