2013-05-24 73 views

risposta

7
[[]] * 2 

fa un shallow copy. Equivalente a:

x = [] 
t0 = [x, x] 

Tuttavia

t1 = [[], []] 

utilizza due letterali separati elenco vuoto, sono completamente diversi così mutazione di uno ovviamente non mutare l'altra

+0

Se voglio dichiarare una lista con n liste vuote, come potrei fare? –

+0

@ user1807991 'items = [[] per i in range (N)]' nota come questo usa solo il letterale di lista vuoto in una list comprehension per assicurarsi che siano separati – jamylak

10

Quando si esegue [[]] * 2, si ottiene un elenco contenente due di lo stesso elenco, anziché due elenchi. E 'come fare:

a = [] 
b = [a, a] 

Il solito modo per fare una lista contenente diversi diversi liste vuote (o altri oggetti mutabili) è quello di fare questo:

t1 = [[] for _ in range(5)] 
+0

Ancora meglio sarebbe sottolineare mutevole, vs oggetti immutabili. Come mostrare la differenza di comportamento con le tuple e gli elenchi qui? – Arafangion

Problemi correlati