[Python-de] Arrays vorallokieren

René Liebscher R.Liebscher at gmx.de
Wed Mar 26 12:22:54 EST 2003


René Liebscher schrieb:
> 
> "python-welt.de" schrieb:
> >
> > machs so:
> >
> > l = [False] * 5
> > m = map(lambda x: [x]*5, l)
> 
> Ist das nicht dasselbe wie
> 
> m = [[False]*5]*5
> 
> MfG
> Rene
> 

Habe gerade festgestellt das das nicht dasselbe ist.

>>> l = [0] * 5
>>> m = map(lambda x: [x]*5, l)
>>> m
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0,
0, 0, 0, 0]]
>>> m[0][2]=1
>>> m
[[0, 0, 1, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0,
0, 0, 0, 0]]


>>> m = [[0]*5]*5
>>> m
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0,
0, 0, 0, 0]]
>>> m[0][2]=1
>>> m
[[0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0], [0,
0, 1, 0, 0]]

Sieht zwar auf den ersten Blick gleich aus. Aber die zweite Variante
besteht nur aus Referenzen auf die EINE Liste.

MfG
Rene




More information about the Python-de mailing list