2016-07-10 5 views
-1
def function(inputlist, outputlist,**kwargs): 
    def f(*inputlist, **kwargs): 
     return outputlist 
    return f 

wird eine Liste zurückgeben, aber ich möchte den Rückgabewert separate Werte sein.Wie entpacke ich eine Liste, während ich sie zurückschicke?

+0

Können Sie ein Beispiel zeigen, was gerade passiert und was ist das gewünschte Verhalten? – karthikr

+0

Was ist der Unterschied zwischen der Rückgabe einer Liste oder der Rückgabe mehrerer Werte? –

+0

Was möchten Sie genau fragen ?! Momentan gibt die 'Funktion' eine andere Funktion zurück, die 'f' ist, und die Funktion' f' nimmt die 'inputlist' und' ** kwargs' als Eingabe, da sie immer die 'outputlist' zurückgibt. Zum Beispiel verwenden Sie eine Funktion wie diese: 'a = function ([1,2, 'abc'], [], v1 = 10, v2 = 20)', dann wird 'a'' 'function __main __. F '' '. Und 'a()' ist eigentlich 'f()', und der zurückgegebene Wert ist '[]' – MaThMaX

Antwort

0

Angenommen, Sie haben n Wert in outputlist. Dann statt

return outputlist 

Sie möchten

return outputlist[0], outputlist[1], ..., outputlist[n] 

Offensichtlich

return *outputlist 

nicht funktioniert und wirft eine SyntaxError.

Anbetracht

return v1, v2, v3 

ist die gleiche wie

return (v1, v2, v3) 

könnten Sie einfach

return tuple(outputlist) 

zu erreichen, was Sie wollen.

Aber am Ende wird es sich fast genauso verhalten wie die Liste selbst in Bezug auf das Auspacken zurückgeben.

+0

Danke! In diesem Fall ist der Rückgabewert jedoch ein Tupel, nicht ein einzelner Wert. –

+0

Endlich benutze ich folgendes. def-Funktion (Inputlist, output, ** kwargs): def f (* Inputlist, ** kwargs): wenn len (output) == 1: Rückkehr output [0] sonst: return output return f –

Verwandte Themen