pitón copia de la lista de seis métodos

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 l 1 l1 a, l 6 L6 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, l 1 l1 principio de replicación es a l l La dirección también puede copiar más tarde, es decir, cuando l l Cuando cambiado, l 1 l1 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 l l Cuando se realizan cambios en el sub-lista interna, solamente l 6 L6 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:

  • l 1 = l l1 = l : Cuando l l Cuando los cambios l 1 l1 cambiará.
  • l 2 = l . C la pag y ( ) L2 = l.copy () , l 3 = l [ : ] L3 = l [:] , l 4 = l i s t ( l ) L4 = lista (l) , l 5 = c o p y . c o p y ( l ) L5 = copy.copy (l) :当 l l cuando un solo cambio en el número, l 2 l2 , l 3 L3 , l 4 l4 , l 5 L5 no cambia, cuando l l cambios sublista, l 2 l2 , l 3 L3 , l 4 l4 , l 5 L5 cambiará.
  • l 6 = c o p y . d e e p c o p y ( l ) l6 = copy.deepcopy (l) : Ya sea l l cómo el cambio, l 6 L6 no cambian.
Publicados 135 artículos originales · elogios ganado 30 · Vistas de 100.000 +

Supongo que te gusta

Origin blog.csdn.net/qq_36758914/article/details/105269814
Recomendado
Clasificación