Ir para conteúdo
Fórum Script Brasil
  • 0

[Dúvida] Erro índice IndexError: list index out of range


Fernandus

Pergunta

Olá Pessoal,

Eu sou novo no fórum, e novo na linguagem Python. Estou fazendo um programinha que lê um arquivo .txt para obter os dados de um grafo. Efetuada a leitura, eu preciso criar uma matriz de adjacência para ele. a Matriz de adjacência é uma matriz binária que marca com 1 a existência de aresta entre dois vértices do grafo, no qual sua dimenção é n x n, onde n é o número de vértices contidos no grafo.

Para criar a criar a matriz de adjacência, iniciei uma matriz preenchendo-a com zeros da seguinte forma:

matrizAdjacencia = [[0 for i in range(1,numVertice+1)] for j in range(1,numVertice+1)]

Logo em seguida, para ler cada linha do arquivo e gerar a matriz, escrevi o seguinte código:

for i in range(1,numAresta+1):
    str = arquivo.readline()
    str = str.split()
    origem = int(str[0])
    destino = int(str[1])
    distancia = int(str[2])
    custo = (str[3])
    custo = custo.split('\n')
    custo = float(custo[0])
    matrizAdjacencia[origem][destino] = 1

Porém quando executo o código, exibe o erro :

  "matrizAdjacencia[origem][destino] = 1
IndexError: list index out of range"

Eu imaginei que o erro ocorresse por que o for está em relação ao número de arestas (100) e a inicialização da matriz foi em relação ao número de vértices (40), porém não me parece que estou percorrendo a matriz iniciada, estou apenas acessando os índices, e este erro não parece fazer sentido.

Agradeço desde já a todos.

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Então é uma Matriz[40][40], mas quando você for usar ela não pode ir alem do 39 exemplo:

Matriz[39][39] = 1 #limite max

Matriz[40][0] = 2 #erro de index

Matriz[3][40] = 5 #erro de index

 

Recomendo colocar um print(origem, destino) antes da linha  matrizAdjacencia[origem][destino] = 1 para pegar o erro

Link para o comentário
Compartilhar em outros sites

  • 0
Em 10/12/2016 at 10:24, ArteEN disse:

Obrigado pelas respostas. O problema é justamente este. Como estou fazendo leitura de arquivo, os índices de dentro do colchetes não serão maiores que o número de vértice e a leitura será válida. No entanto de alguma forma o número de iterações do loop está fazendo com que este erro de acesso de índice ocorra.

 

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...