AW: [Python-de] Liste mit Variablen: Ist dasmöglich ?

Fritz Cizmarov fritz at sol.at
Don Dez 11 18:08:44 CET 2003


Am Thu, 11 Dec 2003 15:10:07 +0100
Schrieb "Rainer Fischbach" <fischbach at ecs-gmbh.de>:

> 
> -----Ursprüngliche Nachricht-----
> Von: Michael Grabietz [mailto:michael.grabietz at img-online.de] 
> Gesendet: Donnerstag, 11. Dezember 2003 13:52
> An: python-de at python.net
> Betreff: [Python-de] Liste mit Variablen: Ist dasmöglich ?
> 
> 
> 
> > Ich habe eine weitere Liste mit Werten:
> > ---------------------------------------
> > val_list = [ val1, val2 ]       z.B. Strings
> >
> >
> > Das will ich haben:
> > -------------------
> 
> > Da ich nur zwei Werte habe, sollen nur die ersten beiden Objekte in 
> > my_list mit diesen Werten besetzt werden.
> 
> > Also so:
> 
> > var1 soll den Wert val1 zugewiesen bekommen
> > var2 soll den Wert val2 zugewiesen bekommen
> > var3 soll auf 'None' bleiben.
> 
> Wenn Du eine Liste von Werten einer Liste von Variablen zuweist, wie
> in
> 
> [v1, v2, ... vn] = [w1, w2, ... wm]
> 
> muss n = m gelten, müssen also beide Listen gleich lang sein. Das, was
> Du willst, geht in Python nicht (in Perl würde es gehen, doch halte
> ich das Feature für fehleranfällig).
> 
> Eine saubere Weise, so etwas zu machen, setzt Listen mit
> Kopf-Schwanz-Struktur voraus, wie in ML u. ä. Dort kann mann etwa
> schreiben
> 
> let u:v:rest = liste;
> 
> was u und v an die beiden ersten Elementw von liste bindet. Das
> funktioniert immer, wenn liste wenigstens zwei Elemente hat. Rest
> enthält immer den Rest von liste, also [], wenn diese genau zwei
> Elemente hat
> 
> sl, Rainer
> 

Hallo,

warum soll das mit Python nicht gehen?
Zumindest in Python 2.3 gehts so

a = [None, None, None]
 
b = ["erster", "zweiter"]
 
a[:len(b)] = b
 
print a

['erster', 'zweiter', None]
 

Gruß

Fritz