Estructura de datos y algoritmo_Matriz dispersa

** **

1. ¿Qué es una matriz dispersa?

**
Respuesta: La matriz dispersa es almacenar los tres valores de la horizontal horizontal, la coordenada vertical y el tamaño del elemento del elemento de matriz bidimensional en una matriz en otra matriz. Es más adecuado cuando el número de elementos en la matriz es relativamente pequeño. Por lo tanto, las matrices dispersas pueden reducir en gran medida el espacio de almacenamiento.

2. Los pasos específicos de la operación son, por ejemplo, en una matriz bidimensional de 5 * 5, que debe convertirse en una matriz dispersa, el diagrama esquemático es el siguiente:
Inserte la descripción de la imagen aquí

2. Pasos específicos

  • 1. Atraviese la matriz bidimensional una vez para obtener la suma numérica de valores distintos de cero en la matriz bidimensional, la fila my la columna n de la matriz bidimensional.

  • 2. Inicialización de matriz dispersa: el número de filas en la matriz dispersa es igual al número de valores distintos de cero más 1, es decir, suma + 1, y el número de columnas es 3.

  • 3. Asignación de matriz dispersa: el primer valor de la primera fila representa la cantidad de filas de la matriz bidimensional, a su vez representa la cantidad de columnas y la cantidad de valores distintos de cero.

  • 4. Después de obtener la matriz dispersa, la matriz dispersa puede almacenarse en un archivo y luego leerse cuando sea necesario.

  • 5. Restaure la matriz dispersa: primero lea la primera línea de la matriz dispersa para inicializar la matriz bidimensional y luego asigne valores a ubicaciones específicas a su vez.

** **

3. Lo que aprendiste al escribir código:

**
¿Cómo usar Python para realizar bucle?
Respuesta: Use para i en rango (x, y, z): estructura. En esta declaración, i representa el subíndice de la lista que necesita recorrer. Use x e y para controlar los límites superior e inferior de la lista, y z para controlar el incremento de cada ciclo.

for i in  range(0,3,1):
	print("%d,我爱python" % i )

Los resultados de ejecución de este código son:
1, me encanta python
2, me encanta python
3, me encanta python

¿Cómo implementar y usar una matriz bidimensional con python?
Respuesta: En realidad no hay un concepto de matriz en Python, debe usar la lista [] para lograrlo.

Sparse_list = [[0 for col in range(m)] for row in range(n)]  
# 其中0为二维数组的初始值,m为列数,n为行数

El uso de matrices bidimensionales no es diferente de otros lenguajes, como C y Java. Utilice nombres de lista y coordenadas de clase de fila para asignar valores.

¿Cómo usar las operaciones de archivo para almacenar matrices dispersas?
Respuesta: Use la función de abrir para abrir el archivo de acuerdo con el nombre del archivo y los caracteres de permiso de operación, y asigne un valor a un objeto de archivo, y use el método writelines () del objeto de archivo para escribir el archivo.
Nota: Recuerde cerrar el archivo al final de la escritura.

#将稀疏数组存放到文件中
fo = open("output.txt","w")
for i in range(len(sparse_list)):
    fo.writelines("%3d%3d%3d\n"%(sparse_list[i][0],sparse_list[i][1],sparse_list[i][2]))
fo.close()
print("储存成功!")

Cómo volver a una matriz dispersa desde el archivo
A: Básicamente, no es diferente de la operación de escritura, pero durante el proceso de lectura, debe usar una operación de corte para cortar cada línea en datos específicos, y usar la función eval () para convertir los caracteres La cadena se convierte en números y se almacena en una matriz dispersa.

Para aquellos que no están familiarizados con las funciones de corte y evaluación (), pueden Baidu, y no me expandiré aquí.

#从文件中读取并打印出來,得到稀疏数组2
sparse_list2 = [[0 for col in range(3)] for row in range(sum+1)]
print("读取的文件为---------")
count = 0
fi = open("output.txt","r")
for line in fi:
    print(line)
    sparse_list2[count][0]=eval(line[0:3])
    sparse_list2[count][1]=eval(line[3:6])
    sparse_list2[count][2]=eval(line[6:9])
    count = count + 1
fi.close()
27 artículos originales publicados · elogiados 2 · visitas 680

Supongo que te gusta

Origin blog.csdn.net/qq_44273739/article/details/104746060
Recomendado
Clasificación