La siguiente es una lista de los seis tipos de modo de copia, en conclusión, hay tres principios en el momento de la reproducción, que a, es la segunda, la tercera parte de los otros cuatro métodos.
import copy
l = [1, 2, [3, 4]]
l1 = l
l2 = l.copy()
l3 = l[:]
l4 = list(l)
l5 = copy.copy(l)
l6 = copy.deepcopy(l)
Podemos empezar a imprimir sus direcciones:
print(id(l))
print(id(l1))
print(id(l2))
print(id(l3))
print(id(l4))
print(id(l5))
print(id(l6))
2515754890952
2515754890952
2515754891912
2515754910792
2515754891208
2515754863048
2515754910984
Se puede observar, principio de replicación es a La dirección también puede copiar más tarde, es decir, cuando Cuando cambiado, cambiará. Sin embargo, otros medios de copiar este problema no se produce, como por ejemplo:
l[0] = 0
print('l: ', l)
print('l1: ', l1)
print('l2: ', l2)
print('l3: ', l3)
print('l4: ', l4)
print('l5: ', l5)
print('l6: ', l6)
Obtener:
l: [0, 2, [3, 4]]
l1: [0, 2, [3, 4]]
l2: [1, 2, [3, 4]]
l3: [1, 2, [3, 4]]
l4: [1, 2, [3, 4]]
l5: [1, 2, [3, 4]]
l6: [1, 2, [3, 4]]
Pero si para Cuando se realizan cambios en el sub-lista interna, solamente seguirá siendo el mismo, tales como:
import copy
l = [1, 2, [3, 4]]
l1 = l
l2 = l.copy()
l3 = l[:]
l4 = list(l)
l5 = copy.copy(l)
l6 = copy.deepcopy(l)
l[2][0] = 0
print('l: ', l)
print('l1: ', l1)
print('l2: ', l2)
print('l3: ', l3)
print('l4: ', l4)
print('l5: ', l5)
print('l6: ', l6)
l: [1, 2, [0, 4]]
l1: [1, 2, [0, 4]]
l2: [1, 2, [0, 4]]
l3: [1, 2, [0, 4]]
l4: [1, 2, [0, 4]]
l5: [1, 2, [0, 4]]
l6: [1, 2, [3, 4]]
Por lo tanto, la conclusión:
- : Cuando Cuando los cambios cambiará.
- , , , :当 cuando un solo cambio en el número, , , , no cambia, cuando cambios sublista, , , , cambiará.
- : Ya sea cómo el cambio, no cambian.