A diferença entre o python e superficial cópia da cópia profunda

Em primeiro lugar, a atribuição

alist = [ "a", "b", "c", [5,6], 10]
aa = alist
alist.append ( "yu")
aa.append ( "IOP")
alist [3] .append (99 )
alist [3] .append ( "test")
print (alist)
print (aa)

resultados da execução são as seguintes:

[ 'a', 'b', 'c', [5, 6, 99, 'teste'], 10, 'yu', 'PIO']
[ 'a', 'b', 'c', [5 , 6, 99, 'teste'], 10, 'yu', 'PIO']

Instruções de atribuição são passados ​​entre dois dados mutuamente variáveis, modificar o valor de qualquer variável, outras variáveis ​​terá um impacto sobre o valor

 

Em segundo lugar, a cópia superficial, Copy ()

cópia de importação

# Cópia superficial, há cópias dos elementos internos do elemento, tem elementos internos afetará o outro para mudar o

blist = [ "a", "b", "c", [5,6], 10]
bb = copy.copy (blist)
blist.append ( "ha ha")
bb.append (89)

blist [3]. de acréscimo ( "QE")
bb [3] .append (99)

imprimir (blist)
print (bb)

Os resultados:

[90, 'b', ' c', [5, 6, 'qe', 99], 10, 'haha'] # blist adicional 'haha', e não o valor bb, o número de elementos internos para blist [ 3] foi adicionada 'qe', vai ser aplicada ao bb bb [3], os elementos internos
[ 'a', 'b' , 'c', [5, 6, 'qe', 99], 10, 89] #BB adicionado 89, não valor blist, o número de elementos internos BB [3] adicionar 99, actuará para blist blist [3], o elemento interno

Em terceiro lugar, a cópia profunda

cópia de importação

# Cópia profunda, a cópia de cada um dos elementos independentemente uns dos outras alterações, incluindo o sub-elementos
Clist = [ "A", "B", "C", [5,6], 10]
CC = copy.deepcopy (clist)
CList .append (90)
cc.append (100)

clist [3] .append (11)
cc [3] .append (10)

imprimir (clist)
print (cc)

Os resultados:

[ 'a', 'b', 'c', [5, 6, 11], 10, 90]
[ 'a', 'b', 'c', [5, 6, 10], 10, 100]

De fato, a cópia profunda, todo o elemento externo é copiado, a cópia profunda, alterar os valores das duas variáveis, não afetará o outro

 

Acho que você gosta

Origin www.cnblogs.com/banxiade/p/12470241.html
Recomendado
Clasificación