Capisco le differenze tra copia superficiale e copia profonda come ho imparato in classe. Tuttavia, il seguente non ha sensoCopia e DeepCopy in python3
import copy
a = [1, 2, 3, 4, 5]
b = copy.deepcopy(a)
print(a is b)
print(a[0] is b[0])
----------------------------
~Output~
>False
>True
----------------------------
non print(a[0] is b[0])
dovrebbe valutare False come gli oggetti ed i loro elementi costitutivi vengono ricreati in una posizione di memoria diversa in una copia profonda? Stavo solo testando questo perché ne avevamo discusso in classe, ma non sembra funzionare.
Non è quello che stai descrivendo il principio delle "copie superficiali", ad esempio copy.copy (a), quando si utilizza copy.deepcopy (a), gli elementi non dovrebbero essere tutti in posizioni di memoria diverse, ovvero quell'id (a [0]) ! = id (b [0]) –
@GeraldLee: Questo è un caso speciale, in quanto i "piccoli" numeri interi ('<257') verranno corretti nella posizione di memoria per accelerare le operazioni comuni. Prova quanto segue: 'a, b = (lista (intervallo (258)), lista (intervallo (258))); [id (a [i]) == id (b [i]) per i in gamma (258)] 'in python REPL – Steen
Gli inti piccoli sono esempi di singleton Python. Altri sono 'None',' True' e 'False' – PMende