2009-08-25 22 views
2

Gegeben ein Tupel (speziell eine Funktion varargs), ich möchte eine Liste mit einem oder mehreren Elementen voranstellen und dann eine andere Funktion mit dem Ergebnis als Liste aufrufen. Bisher war die beste, die ich habe kommen mit ist:Hängen Sie ein Tupel an eine Liste an

def fn(*args): 
    l = ['foo', 'bar'] 
    l.extend(args) 
    fn2(l) 

Which, gegeben Pythons üblichen Prägnanz, wenn es um diese Art der Sache, scheint, wie es 2 braucht mehr Zeilen als es sollte. Gibt es einen mehr pythischen Weg?

Antwort

9

Sie können das Tupel in eine Liste konvertieren, die es Ihnen ermöglicht, es mit der anderen Liste zu verketten. dh:

def fn(*args): 
    fn2(['foo', 'bar'] + list(args)) 
+0

Etwas genau so. Oh, die Schande. – MHarris

1

Wenn Ihr fn2 varargs auch nahm, würden Sie nicht brauchen die kombinierte Liste zu erstellen:

def fn2(*l): 
    print l 

def fn(*args): 
    fn2(1, 2, *args) 

fn(10, 9, 8) 

produziert

(1, 2, 10, 9, 8) 
+0

Danke! Leider ist fn2 eine API von Drittanbietern und nimmt keine Varargs. – MHarris

Verwandte Themen