Python - Consulta de funcinamiento inesperado en algoritmo simple

 
Vista:

Consulta de funcinamiento inesperado en algoritmo simple

Publicado por Marcela (1 intervención) el 10/04/2021 03:12:07
Hola! alguien podria decirme por que el siguiente codigo me imprime vacia la lista1, si yo nunca la borre ni vacié? Yo solo borro la lista2 y ANTES de borrar, asigne sus valores a lista1!
Gracias!!

1
2
3
4
5
6
7
lista1=[1,2,5,7,8]
lista2=[3,4,5]
 
lista1=lista2
print("lista y lista2: ", lista1,lista2)
lista2.clear()
print("lista y lista2: ", lista1,lista2)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Camilo
Val: 40
Ha disminuido su posición en 2 puestos en Python (en relación al último mes)
Gráfica de Python

Consulta de funcinamiento inesperado en algoritmo simple

Publicado por Camilo (13 intervenciones) el 10/04/2021 03:38:13
Al asignar una variable no solo se asigna el valor, tambien el identificador, o puede verse como posición en memoria, ya que las dos variables apuntan a la misma posición en memoria, por eso se eliminan, como puede verse aqui:

1
2
3
4
5
6
7
8
9
10
11
lista1=[1,2,5,7,8]
lista2=[3,4,5]
print(id(lista1))
print(id(lista2))
 
lista1=lista2
print("lista y lista2: ", lista1,lista2)
print(id(lista1))
print(id(lista2))
lista2.clear()
print("lista y lista2: ", lista1,lista2)

Una solución a esto, es usar una función copy(), al asignar

1
2
3
4
5
6
7
lista1=[1,2,5,7,8]
lista2=[3,4,5]
 
lista1=lista2.copy()
print("lista y lista2: ", lista1,lista2)
lista2.clear()
print("lista y lista2: ", lista1,lista2)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar