2016-06-09 20 views
2

Ich versuche, so etwas wie dies in Python zu tun:Wie gebe ich eine entpackte Liste in Python zurück?

def f(): 
    b = ['c', 8] 
    return 1, 2, b*, 3 

Wo ich f will (1, 2, 'c', 8, 3) das Tupel zurückzukehren. Ich habe einen Weg gefunden, dies mit itertools gefolgt von tuple zu tun, aber das ist nicht sehr nett, und ich fragte mich, ob es eine elegante Möglichkeit gibt, dies zu tun.

Antwort

6

Der Entpacker * erscheint vor dem b, nicht danach.

return (1, 2, *b, 3) 
# ^ ^^ ^

Dies wird jedoch nur auf Python arbeiten 3.5+ (PEP 448) und auch müssen Sie Klammern hinzuzufügen Syntax zu verhindern. In den älteren Versionen verwenden + die Tupel zu verketten:

return (1, 2) + tuple(b) + (3,) 

Sie brauchen die nicht tuple anrufen, wenn b bereits ein Tupel statt einer Liste:

def f(): 
    b = ('c', 8) 
    return (1, 2) + b + (3,)