Forum >> Principianti >> Assegnare valori ad elemento di lista annidata

Pagina: 1

Sezione pre principianti. Ho scorso tutte le 36 pagine della
sezione Principianti ma non ho trovato nulla (e questo non mi ha rincuorato,
anzi)


Come si fa ad assegnare un valore (che proviene da un
calcolo) ad uno specifico elemento di una lista di liste numeriche?


Una esemplificazione del mio problema:





alfa=[1,1,1,1]


matrice=[]


for t in
range(6):


        matrice.append(alfa)


print("matrice di partenza:  ",matrice)


matrice[ 2 ][ 2 ]=0


print("matrice di arrivo:       ",matrice)


 


l'output è 


matrice di partenza:  
[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1],
[1, 1, 1, 1]]


matrice di arrivo:       
[[1, 1, 0, 1], [1, 1, 0, 1], [1, 1, 0, 1], [1, 1, 0, 1], [1, 1, 0, 1],
[1, 1, 0, 1]]





cioè mi assegna il valore all'elemento di indice 2 ma a
tutta la "colonna"


Come avrete capito io volevo variare solo uno specifico
elemento di indici 2,2
P.S. quando faccio qui l'anteprima mi toglie le parentesi quadre dall'assegnazione e mi ci mette il ? come apice. E anche questo mi rincuora...


--- Ultima modifica di Sarvegu in data 2017-05-27 13:06:11 ---

--- Ultima modifica di ㎝ in data 2017-05-27 21:38:49 ---
alfa=[1,1,1,1]
matrice=[]

for t in range(6):
    matrice.append(alfa)

print("matrice di partenza:  ",matrice)
matrice[ 2 ][ 2 ]=0
print("matrice di arrivo:       ",matrice)
cioè mi assegna il valore all'elemento di indice 2 ma a
tutta la "colonna"
È perché matrice contiene 6 riferimenti identici alla lista alfa; quindi se ne modifichi uno, la modifica si riflette su tutti gli altri. Puoi ottenere il risultato che desideri ad esempio facendo:

alfa = [1, 1, 1, 1]
matrice = []

for t in range(6):
    matrice.append(alfa.copy())

print("matrice di partenza:", matrice)
matrice[ 2 ][ 2 ] = 0
print("matrice di arrivo:", matrice)

(nota la chiamata al metodo copy() di alfa)

Ciao,

THE 🍺-WARE LICENSE (Revision ㊷):
<㎝🐌🐍.🇮🇹> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Grazie.


Pagina: 1



Esegui il login per scrivere una risposta.