Frage

Ich weiß, über Karte / reduzieren alghoritm und seine Verwendung. Es ist mit Funktionen, die Mapper und Reduzierungen genannt werden, aber ich Menschen auch das Wort-Filter verwenden finden.

Sind Filter gleiche wie Mapper oder gibt es einen signifikanten Unterschied?

War es hilfreich?

Lösung

Ein Filter wie eine Karte ist, für die die übergebene Funktion eine „charakteristische Funktion“ ist immer, das ist eine Funktion, die entweder „Ja“ oder „Nein“ auf die Frage gibt „diese hier gehört?“

Mit anderen Worten, denken Sie an einem Satz als {x definiert | x ∈ X und P (x) }. Filter nimmt den Basissatz, Tests, um zu sehen, ob P (x) wahr ist, und gibt nur die Mitglieder, für die es wahr ist.

So { x | x ist eine natürliche Zahl und ungerade ( x )} ist {1,3,5,7 ...}.

A Karte wendet eine beliebige Funktion, so dass Sie davon als ein Satz wie {y denken | x ∈ X und y = f (x) }.

So { y | x ist eine natürliche Zahl und y = x² } ist {1,4,9,16, ...}.

Andere Tipps

Filter nimmt eine „Liste“ und eine Funktion, wendet die Funktion auf jedes Mitglied der Liste und gibt eine neue Liste enthält nur Mitglieder in denen die Anwendung der Funktion zurückgegeben wahr. Zum Beispiel:

l = [1,2,3,4]
l = filter(lambda x: x < 3, l)
print l # [1,2]

Karte macht das Gleiche, aber gibt eine Liste der Ergebnisse der Funktionsanwendung enthalten:

l = [1,2,3,4]
l = map(lambda x: x < 3, l)
print l # [True,True,False,False]

Ein Filter legt fest, ob ein Element gehalten werden soll oder entfernt werden. Ein Mapper übersetzt nur den Wert in zu einem anderen. Als Konsequenz: Die Ausgabe eines Kartenbetrieb eingestellt ist immer gleich groß mit dem Eingangssatz. Der Ausgang auf einer Filteroperation kleiner ist als der Eingang.

Im Allgemeinen nehmen die Kartenfunktionen eine Eingabe festgelegt, und eine Funktion, und gibt einen Satz den Funktionsausgang für jedes Eingangselement enthält. Ein Filter nimmt einen Setzeingang und einen Booleschen Funktion, und gibt einen Satz der Eingangswerte enthält, für die die Funktion wahr zurück.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top