<div dir="ltr">Nel primo caso viene creata una lista i cui elementi sono riferimenti allo (e non copie dello) stesso oggetto, mentre nel secondo caso memorizzi tre riferimenti a tre oggetti dict distinti che vivono di vita propria.</div><div class="gmail_extra"><br><br><div class="gmail_quote">Il giorno 05 settembre 2014 10:18, Walter Valenti <span dir="ltr"><<a href="mailto:waltervalenti@yahoo.it" target="_blank">waltervalenti@yahoo.it</a>></span> ha scritto:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Prendiamo questo semplice codice:<br>
<br>
<br>
def list():<br>
    elem = dict()<br>
    lista = []<br>
    for x in range(3):<br>
        elem['nome'] = x<br>
        lista.append(elem)<br>
    print lista<br>
list()<br>
<br>
Mi aspetterei come output:<br>
[{'nome': 0}, {'nome': 1}, {'nome': 2}]<br>
Quello che ottengo è invece:<br>
[{'nome': 2}, {'nome': 2}, {'nome': 2}]<br>
<br>
Se invece il ciclo lo scrivo così ("elem" lo dichiaro dentro il ciclo):<br>
def list():<br>
    lista = []<br>
    for x in range(3):<br>
        elem = dict()<br>
<br>
        elem['nome'] = x<br>
        lista.append(elem)<br>
    print lista<br>
list()<br>
<br>
ottengo l'output come previsto.<br>
<br>
Cosa succede nel primo caso?<br>
Viene modificato il dizionario messo nella lista?<br>
Perché?<br>
<br>
Grazie<br>
<br>
Walter<br>
<br>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>"Shipping is a feature. A really important feature. Your product must have it."<br><br>"Rendete ogni cosa il più semplice possibile, ma non di più" (Albert Einstein)<br><br>"You are what you choose today, not what you've chosen before"<br><br>"Unix IS user friendly. It's just selective about who its friend are"
</div>