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