2017-07-11 4 views
3

Ich möchte etwas wie Verwendung lambda zu einer Funktion, die eine Ausgabe von None oder Liste und wenn es eine Liste ist, dann den ersten Wert erhalten zu realisieren.Python Lambda-Aufruf-Funktion mit keine Ausgabe

In dieser Funktion scheint es jedoch erforderlich, die Funktion zweimal aufzurufen, um herauszufinden, ob es None ist. Natürlich kann ich schreiben Sie einfach den Code versuchen oder bedingte Anweisungen:

def function(x): 
    try: 
     return func(x,args)[0] 
    except (IndexError,TypeError): 
     return None 

oder einfach nur die Ausgabe von func ändern. Aber ich bin immer noch neugierig, ob es einige Methoden gibt, die Funktion nur einmal mit lambda aufzurufen.

+0

Am allerwenigsten nur das 'IndexError' fangen und' TypeError' Ausnahmen, die Ihr Code, nicht * alles anderes * (einschließlich Speicherfehler und Tastatur-Interrupts) werfen. –

+0

Warum nicht 'list = func (x, args); Lambda x: Liste [0] wenn Liste sonst Keine < – yinnonsanders

+2

@yinnonsanders Nein, denn dann braucht es 2 Zeilen, nicht eine. –

Antwort

14

tut Das wird:

lambda x: (func(x, args) or [None])[0] 
+0

Kurz, süß und auf den Punkt. Definitiv +1. – cwallenpoole