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:

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: 13114
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

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).
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

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: 6741
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

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