tonyhts
(usa Arch Linux)
Enviado em 26/04/2018 - 22:02h
Salve!
Não sei se entendi direito o vc quer, mas segue um exemplo de matriz dinâmica, usando list comprehension:
V=4
dist = [[i for i in range(V)] for j in range(V) ]
O codigo acima acaba de gerar, baseado no valor da sua variavel V(4), uma lista com 4 listas (lista 0, 1, 2, 3 ) cada uma das listas tem 4 itens (item 0,1,2,3).
Saída:
>>> print(dist)
[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]
O que seria o mesmo de:
V = 4
dist = []
for i in range(V):
dist.append([])
for j in range(V):
dist[i].append(j)
Saída:
>>> print(dist)
[[0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3], [0, 1, 2, 3]]
DICA: No começo , listas podem parecer difíceis mas, definitivamente, não são. Esvazia a mente e desenhe cada passo do comando na cabeça:
for i in range(V): #Cria o loop para cada " i " num rande 0 a 3 (4 vezes), faça:
dist.append([]) # Cria uma sub-lista vazia na lista chamada dist
for j in range(V): #Cria o segundo loop dentro do primeiro fazendo: - para cada " j " num loop de 4 vezes, faça:
dist[i].append(j) #Lembrando aqui é o loop 2 tarefa #1 - adicione o valor de " j " na sub- lista " i " na lista mae dist
Sacou?
Agora, sobre o seu codigo, olha só como o python interpreta isso. Descontrair é sempre baum nesses casos :)
V = 4
PYTHON: Feito, chefe! Criei aqui uma variável chamada V e atribuí a ela o valor 4.
dist = []
PYTHON: Feito, chefe! Criei aqui uma lista vazia chamada dist.
for i in range(V):
PYTHON: opa! Vamos ver: V =4, então um range de 0 ate 3 é igual a 0 1 2 3. Endenti, chefe! Comecei aqui um loop que rodará 4 vezes e a cada
iteração eu vou atribuir o valor atual para variável i, que neste caso é 0
for j in range(V):
PYTHON: Entendido, você quer que a primeira tarefa do 1 primeiro lopp seja criar outro loop de 4 iterações e atribuindo o valor da iteração
para a variavel j.
Agora tenho que executar todas as tarefas desse loop, antes de voltar pro loop1. .ok, vamos lá.
dist[i][j] = 0
PYTHON: humm vamos ver: você quer que eu atribua valor 0 pra o item numero 0 da sublista 0 na lista mae dist. Mas ai você me quebra, chefe!
A lista tá vazia, lembra? Como que vou atribuir um valor para uma item que não existe numa sublista que não existe?
IndexError: list index out of range
erro de Indice : Indice da lista esta fora de alcance, chefe.
para você não se confundir, mais alguns exemplos:
#Vamos gerar 3 listas e dar nomes criativos elas :)
lista_1 = [0, 1, 2, 3]
lista_2 = [4, 5, 6, 7]
lista_3 = [8, 9, 10, 11]
#Agora vamos fazer uma lista chamada “listas_de_listas” com as listas que acabamos de criar:
lista_de_listas = [lista_1, lista_2, lista_3]
print(lista_de_listas)
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]
vamos usar os índices pra imprimir.:
#Imprima o item de índice 0 da lista chamada lista_de_listas
print(lista_de_listas[0])
[0, 1, 2, 3]
#Imprima o item de índice 1 da lista chamada lista_de_listas
print(lista_de_listas[1])
[4, 5, 6, 7]
#Imprima o item de índice 2 da lista chamada lista_de_listas
print(lista_de_listas[2])
[8, 9, 10, 11]
#Forçando um erro
#Imprima o item de índice 5 ( que nao existe) da lista chamada lista_de_listas
print(lista_de_listas[5])
IndexError: list index out of range
Espero ter ajudado! Estou a um bom tempo longe do forum, mei que perdi a pratica de explicar.rsrs.
abs!
Uma vida sem desafios não vale a pena ser vivida.
Sócrates
---