lambda s: float(s or 0)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Dienstag 25. September 2018, 10:25

Diese Syntax habe ich in der Numpy Doku entdeckt:

Code: Alles auswählen

lambda s: float(s or 0)
https://docs.scipy.org/doc/numpy/refere ... .genfromtx
als Beispiel für den Parameter converters

Es funktioniert:

Code: Alles auswählen

f = lambda s: float(s or 0)

print( f("123") ) # 123.0
print( f(None)  ) #   0.0
Es hat mich aber überrascht, ich hätte vorher gedacht, dass "s or 0" einen Bool Wert ergeben würde. Tatsächlich ergibt der Ausdruck aber entweder einen String oder eine int.
Wo kann ich eine Erklärung dazu nachlesen?
a fool with a tool is still a fool, www.magben.de, YouTube
Benutzeravatar
__blackjack__
User
Beiträge: 6046
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Dienstag 25. September 2018, 10:38

In der Python-Dokumentation hier https://docs.python.org/3.6/library/std ... and-or-not (Datentypen) und hier https://docs.python.org/3.6/reference/e ... operations (Referenz: Ausdrücke).
long long ago; /* in a galaxy far far away */
Benutzeravatar
ThomasL
User
Beiträge: 934
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Dienstag 25. September 2018, 13:47

Fand das hier vor Wochen sehr leichtgängig zu lesen: https://realpython.com/python-operators-expressions/
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Benutzeravatar
snafu
User
Beiträge: 6075
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Dienstag 25. September 2018, 16:34

ThomasL hat geschrieben:
Dienstag 25. September 2018, 13:47
Fand das hier vor Wochen sehr leichtgängig zu lesen: https://realpython.com/python-operators-expressions/
Wobei der Vergleich zweier Floats (Abschnitt: https://realpython.com/python-operators ... int-values) etwas bequemer mit dem math-Modul geht:

Code: Alles auswählen

x = 1.1 + 2.2
math.isclose(x, 3.3)
# -> True
Antworten