[Python] un dubbio sulle liste

Giuliano Curti giulianc51 a gmail.com
Sab 23 Maggio 2020 23:13:50 CEST


Ciao a tutti,

mi permetto fare una richiesta qui: mi sfugge qualcosa nella gestione
delle liste; non pretendo la soluzione pronta; una indicazione ad un
testo o ad una sua porzione pertinente sarà più che sufficiente :-)

sto operando con vettori e matrici con una asimmetria che non mi torna chiara:

1) vettori: qui il discorso è semplice, ad es. un vettore riga di 3 elementi
   (i vettori colonna rientrano nel caso sotto)
   V = [0]*3
   V -> [0,0,0]
   V[1] = 5
   V -> [0,5,0]
   tutto perfetto;

2) matrici (emulate con lista di liste), ad es. una matrice 2x3
   M = [[0]*3]*2
   M = [[0,0,0],[0,0,0]]
   quando faccio M[0][1] = 5 mi trovo con M -> [[0, 5, 0], [0, 5, 0]]
cioè non solo
   M[0][1] = 5, ma anche M[1][1] = 5;
   lo stesso si ripete ovviamente con M[0][0] e con M[0][2];
   sembrerebbe cioè che gli elementi M[*][c] rimangano collegati;

attualmente uso la modalità
M = []
for i in range (r):
	tmp = []
	for k in range(c):
		tmp.append(0)
	M.append(tmp)
M -> [[0,0,0],[0,0,0]]
che mi consente quello che voglio, ad es. M[0][1] = 5 fornisce M ->
[[0,5,0],[0,0,0]]
ma c'è evidentemente qualcosa che mi sfugge e mi piacerebbe capire :-)

grazie, saluti,
giuliano


Maggiori informazioni sulla lista Python