in Python, quando si esegue a = b
, un non prende il valore di B, ma riferimenti lo stesso valore a cui fa riferimento b. Per vedere ciò, effettuare:
>>> a = {'Test': 42}
>>> b = a
>>> b['Test'] = 24
Qual è ora il valore di a?
>>> a['Test']
24
E 'simile con le liste, quindi dobbiamo trovare un modo per davvero copiare un elenco, e non fare un riferimento ad esso. Un modo potrebbe essere quello di ricreare l'elenco copy = list(list1)
o utilizzare le funzioni del modulo copy
. Ma, dopotutto, il modo più semplice, il più bello, il modo migliore (;)) per fare ciò, è copiare ogni valore della prima lista sull'altra, facendo copy = list1[:]
. Usa le fette, qui list1 è affettato dall'indice 0 all'indice len (lista1), quindi viene restituita l'intera lista1!
Inoltre, il metodo slice è leggermente più veloce: utilizzando il metodo time.clock() per misurare il tempo medio di esecuzione di 1000 assegnazioni di elenchi, ciascuno contenente 10000 numeri interi casuali, con sezioni, costruttore e deepcopy, i risultati mostrano che le fette sono il 15% più veloci del metodo del costruttore e deepcopy è 4 volte più lento. Tuttavia, questo guadagno di tempo è trascurabile durante l'utilizzo di elenchi di piccole dimensioni: pertanto, l'utilizzo di copy = list(list_to_copy)
o copy = list_to_copy[:]
dipende dalle preferenze dello sviluppatore.
Infine, spesso dimentichiamo il metodo list.copy, che sembra essere il più veloce! In effetti, è persino il 13% più veloce del metodo slice!
ti riferisci a una lingua specifica? –
possibile duplicato di [Come clonare o copiare un elenco in Python?] (Http://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list-in-python) –
possibile duplicato di [Spiega la notazione della porzione di Python] (http://stackoverflow.com/questions/509211/explain-pythons-slice-notation) – LittlePanda