Dziwne zachowanie podczas inicjalizacji tablic wielowymiarowych

0
X = [ [ None ] * 2 ] * 2
X[0][1] = 1
print X

Daje wynik [[None, 1], [None, 1]] skad to się bierze?? gdy interpreter daje oczekiwany wynik:

>>> a=[[None, None], [None, None]]
>>> a[0][1]=1
>>> print a
[[None, 1], [None, None]]
0

Odpowiedź jest stosunkowo prosta.
#1.
title
Referencja
#2title

Brak referencji.

Nie ma tu zależności pomiędzy plikiem a interpreterem.
Jest różnica w kodzie :)
Tworząc obiekt w liście i mnożąc te listę (nie będącą zagnieżdżoną) w celu redukcji zużycia pamięci, interpreter tworzy referencje.

1 użytkowników online, w tym zalogowanych: 0, gości: 1