Estrutura de dados e matriz de algoritmo_para

**

1. O que é uma matriz esparsa?

**
Resposta: A matriz esparsa deve armazenar os três valores da esquerda horizontal, coordenada vertical e tamanho do elemento do elemento bidimensional da matriz em uma matriz em outra matriz. É mais adequado quando o número de elementos na matriz é relativamente pequeno. Portanto, matrizes esparsas podem reduzir bastante o espaço de armazenamento.

2. As etapas específicas da operação são, por exemplo, em uma matriz bidimensional 5 * 5, que deve ser convertida em uma matriz esparsa, o diagrama esquemático é o seguinte:
Insira a descrição da imagem aqui

2. Etapas específicas

  • 1. Atravesse a matriz bidimensional uma vez para obter a soma numérica de valores diferentes de zero na matriz bidimensional, a linha me a coluna n da matriz bidimensional.

  • 2. Inicialização de matriz esparsa: O número de linhas na matriz esparsa é igual ao número de valores diferentes de zero mais 1, ou seja, soma + 1, e o número de colunas é 3.

  • 3. Designação de matriz esparsa: o primeiro valor da primeira linha representa o número de linhas da matriz bidimensional, por sua vez, representa o número de colunas e o número de valores diferentes de zero.

  • 4. Após a obtenção da matriz esparsa, a matriz esparsa pode ser armazenada em um arquivo e, em seguida, lida quando necessário.

  • 5. Restaure a matriz esparsa: primeiro leia a primeira linha da matriz esparsa para inicializar a matriz bidimensional e, em seguida, atribua valores a locais específicos.

**

3. O que você aprendeu ao escrever código:

**
Como usar python para realizar loop?
Resposta: Use para i no intervalo (x, y, z): estrutura. Nesta declaração, i representa o índice da lista que você precisa percorrer: Use x e y para controlar os limites superior e inferior da lista e z para controlar o incremento de cada ciclo.

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

Os resultados da execução deste código são:
1, eu amo python
2, eu amo python
3, eu amo python

Como implementar e usar matriz bidimensional com python?
Resposta: Na verdade, não existe um conceito de matriz no Python, você precisa usar a lista [] para conseguir.

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

O uso de matrizes bidimensionais não difere de outros idiomas, como C e java.Use nomes de listas e coordenadas de classe de linha para atribuir valores.

Como usar operações de arquivo para armazenar matrizes esparsas?
Resposta: Use a função abrir para abrir o arquivo de acordo com o nome do arquivo e os caracteres de permissão de operação, atribua um valor a um objeto de arquivo e use o método writelines () do objeto de arquivo para gravá-lo.
Nota: Lembre-se de fechar o arquivo no final da gravação.

#将稀疏数组存放到文件中
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("储存成功!")

Como reverter para uma matriz esparsa do arquivo
A: Basicamente, não é diferente da operação de gravação, mas durante o processo de leitura, você precisa usar uma operação de fatiamento para cortar cada linha em dados específicos e usar a função eval () para converter os caracteres A sequência é convertida em números e armazenada em uma matriz esparsa.

Para aqueles que não estão familiarizados com as funções slicing e eval (), você pode usar o Baidu, e eu não expandirei aqui.

#从文件中读取并打印出來,得到稀疏数组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()
Publicado 27 artigos originais · elogiado 2 · visitas 680

Acho que você gosta

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