mam ten kod:Dlaczego cykl zachowuje się inaczej w jednej iteracji?
gs = open("graph.txt", "r")
gp = gs.readline()
gp_splitIndex = gp.find(" ")
gp_nodeCount = int(gp[0:gp_splitIndex])
gp_edgeCount = int(gp[gp_splitIndex+1:-1])
matrix = [] # predecare the array
for i in range(0, gp_nodeCount):
matrix.append([])
for y in range(0, gp_nodeCount):
matrix[i].append(0)
for i in range(0, gp_edgeCount-1):
gp = gs.readline()
gp_splitIndex = gp.find(" ") # get the index of space, dividing the 2 numbers on a row
gp_from = int(gp[0:gp_splitIndex])
gp_to = int(gp[gp_splitIndex+1:-1])
matrix[gp_from][gp_to] = 1
print matrix
Plik ten zawiera graph.txt:
5 10
0 1
1 2
2 3
3 4
4 0
0 3
3 1
1 4
4 2
2 0
Pierwsze dwie liczby mówią mi, że wykres ma 5 węzłów i 10 krawędzi. Następujące pary liczb pokazują krawędzie między węzłami. Na przykład "1 4" oznacza krawędź między węzłem 1 i 4.
Problem polega na tym, wyjście powinno być tak:
[[0, 1, 0, 1, 0], [0, 0, 1, 0, 1], [1, 0, 0, 1, 0], [0, 1, 0, 0, 1], [1, 0, 1, 0, 0]]
Ale zamiast tego, otrzymuję to:
[[0, 1, 0, 1, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 1, 0, 0, 1], [1, 0, 1, 0, 0]]
Tylko jeden numer jest inny i nie mogę zrozumieć, dlaczego tak się dzieje. Krawędź "3 1" nie jest obecna. Czy ktoś może wyjaśnić, gdzie jest problem?
Dlaczego używacie znaleźć ... może po prostu użyć rozłamu i analizować jako int()? –