Ich lese durch die Python-Dokumentation, um wirklich in die Python-Sprache einzutauchen und stieß auf die Filter- und Kartenfunktionen. Ich habe vorher Filter benutzt, aber nie mapped, obwohl ich beide in verschiedenen Python-Fragen hier auf SO gesehen habe.Python: Unterschied zwischen Filter (Funktion, Sequenz) und Karte (Funktion, Sequenz)
Nach dem Lesen über sie im Python-Tutorial bin ich verwirrt über den Unterschied zwischen den beiden. Zum Beispiel von 5.1.3. Functional Programming Tools:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
...
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
und
>>> def cube(x): return x*x*x
...
>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
sahen diese fast genau die gleiche Funktion wie mir, also ging ich in der Klemme Python interaktiv laufen und getestet meinen eigenen Fall aus. Ich habe map
sowohl für die erste als auch die zweite Instanz oben verwendet, und für die erste (return x % 2 != 0 and x % 3 != 0
) gab es eine Liste von Booleschen statt Zahlen zurück.
Warum gibt map
manchmal einen booleschen Wert und manchmal den tatsächlichen Rückgabewert zurück?
Kann mir jemand genau den Unterschied zwischen map
und filter
erklären?
, die jetzt Sinn macht, ich sehe, wie der Filter Begriff schon sagt, was die Funktion im Vergleich zu der Karte der Fall ist. – samrap
Eigentlich macht der Name 'map()' auch Sinn, wenn in einem Feld die Karte als Verb verwendet wird, bedeutet das, eine 1 zu 1 entsprechende Beziehung zu finden. Wie in Mathematik: "map x to y" oder in der Genetik: "Zuordnung von Diabetes zu einem Gen". Eine Sache, die zu 'Python' passt, ist einfach so: Die Namen ergeben oft Sinn. –
das ist ein guter Punkt. Es ist lustig, wie ähnlich bestimmte Aspekte der Programmierung alltäglichen Beispielen sind.Wie ich bin in Algebra 2 und wir lernen über Funktionen f (x) und die Hälfte der Klasse ist ratlos, aber die Idee ist 100% ähnlich Funktionen in der Programmierung. – samrap