El montón y la pila del espacio de memoria de Python y la lógica de cambio de la lista

   Anteriormente presenté la relación entre el montón y la pila del espacio de almacenamiento de Java, y la introducción de Python hoy en día tiene el mismo principio. Un objeto solicitará un espacio en la memoria para guardar datos.Al acceder a un objeto, no accederá directamente a los datos del objeto en la memoria, sino que accederá por referencia.


   Lo siguiente usará la lista de Python (lista) como ejemplo, es muy similar a la representación de matriz de Java, excepto que la lista puede tener colecciones de diferentes tipos.

inserte la descripción de la imagen aquí



lst1 = [1,2,3]
lst2 = lst1

print('原始的lst1:',lst1)
print('原始的lst2:',lst2,'\n')

lst2[0] = 666

print('更改后的lst1:',lst1)
print('更改后的lst2:',lst2)


   Aquí hay otro ejemplo de cómo eliminar elementos de una lista típica. Supongamos que hay lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], necesitamos eliminar los 10 elementos en él, y finalmente mantener una lista vacía. Tal vez todos piensen en usar el método de bucle para darse cuenta por primera vez. Pruebe los resultados primero.
   Se puede ver que el resultado final es [2,4,6,8,10], ¿cuál es el motivo?

Cuando i = 1, lst.remove(i), quita 1, (i es equivalente a lst[0], ejecuta del lst[0]) lst = [2,3,4,5,6,7,8,9 ,10]


Cuando i = 2, lst.remove(i) no puede entenderse como remove 2, (i es en realidad equivalente a lst[1], ejecute del lst[1]), lst = [2,4,5,6,7 , 8,9,10]

Cuando i = 3, lst.remove(i) no puede entenderse como remove 3, (i es en realidad equivalente a lst[2], ejecuta del lst[2]), lst = [2,4,6,7,8 , 9,10] , y así sucesivamente, el resultado final es [2,4,6,8,10]



inserte la descripción de la imagen aquí



   Por lo tanto, si desea combinar perfectamente y borrar por completo todos los elementos de la lista, puede usar el corte o la copia para lograrlo.

   método de corte



inserte la descripción de la imagen aquí



lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in lst[:]:
    lst.remove(i)

print(lst)


   método de lista de copias



inserte la descripción de la imagen aquí



lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in lst.copy():
    lst.remove(i)

print(lst)


   PD: como en el ejemplo anterior, puede eliminar directamente los números impares de la lista y también puede eliminar directamente los números pares de la lista.



inserte la descripción de la imagen aquí



lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in lst:
    lst.remove(i+1)

print(lst)


   Por supuesto, también se puede realizar agregando un juicio de condición de resto.



inserte la descripción de la imagen aquí



lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in lst:
  if i % 2 != 0:
    lst.remove(i)

print(lst)


inserte la descripción de la imagen aquí



lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in lst:
  if i % 2 == 0:
    lst.remove(i)

print(lst)


   Lo anterior presenta brevemente el montón y la pila de Python, así como ejemplos típicos de cambios en la lista, que a menudo se encuentran al escribir casos de prueba en pruebas de software. Siempre que comprenda los principios lógicos correspondientes, puede aplicarlos de manera flexible a los casos de prueba.

Supongo que te gusta

Origin blog.csdn.net/weixin_48591974/article/details/129857919
Recomendado
Clasificación