Liste Python: provando a costruire una lista, con un metodo learn
di una certa classe P
che ritorna una lista
for i in range(1,5): w=P.learn() print(type(w)) hist_w.append(w) print("hist_w", hist_w)
i valori di w
ritornati ad ogni ciclo erano del tipo
[-1.7968410695441766, 1.1, 0.20315893045582345]
[-2.4943448781251716, 1.1, -0.4943448781251717]
ma la lista hist_w al primo ciclo conteneva
[[-1.7968410695441766, 1.1, 0.20315893045582345]]
Al secondo ciclo conteneva
[[-2.4943448781251716, 1.1, -0.4943448781251717],
[-2.4943448781251716, 1.1, -0.4943448781251717]]
e così via, cioè anziche venire aggiunto l’ultimo elemento (anche lui una lista) alla lista, venivano sostituiti tutti gli elementi della lista con l’ultima lista calcolata.
Il problema è che stavo copiando ogni volta il riferimento alla variabile w
(che è lo stesso ad ogni ciclo) e non il contenuto della variabile stessa (che cambia ad ogni ciclo):
[<riferimento a w>, <riferimento a w>, …]
Per disinnescare l’errore ho fatto così:
for i in range(1,5): w=P.learn() print(type(w)) hist_w.append(w[:]) print("hist_w", hist_w)
Notate il [:] accanto al nome della variabile.
Commenti recenti