lambdas

Code-Stücke können hier veröffentlicht werden.
Antworten
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hallo,

wie wäre es mit einer Sammlung mehr oder weniger nützlcher lambdas?
Ich hab da gleich mal eines:

Code: Alles auswählen

eor_str = lambda x,y: reduce(lambda v, w: v+w, map(lambda t, u: chr(ord(t)^ord(u)),x,y))
Was macht das?
Es exclusivodert zwei gleichlange (!!!) Strings.

Das heist wenn mann z.B.

Code: Alles auswählen

c = eor_str(" Ja ", "Nein")
ausführt, enthält c 'n/\x08N'.

Macht mann jetzt ein

Code: Alles auswählen

print eor_str(" Ja ",c)
wird "Nein" ausgegeben.

Bei

Code: Alles auswählen

print eor_str("Nein",c)
entsprechend " Ja ".


Gruß

Dookie
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Kaufmännisches Runden

Code: Alles auswählen

import math
round = lambda x: math.floor(x+0.5+(0.0000000000000001*((not x) or (x/abs(x)))))
Der Ausdruck x/abs(x) liefert je nach Vorzeichen von x 1 oder -1. Das (not x) or ... davor verhindert bei x=0 einen ZeroDivisionError.


Gruß

Dookie
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Noch elegantere Lösung zum Runden von Voges:

Code: Alles auswählen

Runden = lambda x: int(x+ 0.5 * ((x > 0) or -1))
Allerdings macht die Eingebaute round(x[, n]) Funktion das ganze überflüssig :roll:

Gruß

Dookie
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

berechen einer Variable in Abhängigkeit von einer Bedingung:

Code: Alles auswählen

lambda a,b,c: (a and [b] or [c])[0]
Wenn die Bedingung a wahr ist, ist das Ergebiss b, ansonsten c. Spart einen lästigen Block von If-Abfragen...
Antworten