<div dir="ltr"><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Cosa succede nel primo caso?<br>
Viene modificato il dizionario messo nella lista?<br>
Perché?<br></blockquote><div><br></div><div>Nel primo caso ogni iterazione del ciclo for modifica lo stesso oggetto elem, definito fuori dal ciclo e aggiunto più volte alla lista. Quando viene inserito l'oggetto nella lista non viene ridefinito, come nel secondo esempio.<br><br></div><div>Questo codice, ulteriormente semplificato eliminando il for, forse si capisce meglio:<br><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">elem = dict()<br>lista = []<br><br>elem['nome'] = 0<br>lista.append(elem)<br><br>elem['nome'] = 1<br>lista.append(elem)<br><br>print lista<br></blockquote><div><br></div><div>L'output è:<br><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">[{'nome': 1}, {'nome': 1}]</blockquote><div><br></div><div>Se invece scrivo:<br><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">lista = []<br><br>elem = dict()<br>elem['nome'] = 0<br>lista.append(elem)<br><br>elem = dict()<br>elem['nome'] = 1<br>lista.append(elem)<br><br>print lista<br></blockquote></div></div></div><div><br></div><div>elem viene ridefinito prima del secondo inserimento e infatti l'output è:<br><br><blockquote style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex" class="gmail_quote">[{'nome': 0}, {'nome': 1}]<br></blockquote></div></div><br></div><div class="gmail_extra">Marco<br></div></div>