У меня есть список списков (называемый таблицей):
table = [[0, 1, 2], [1, 2, 1], [2, 3, 2], [0, 2, 3], [0, 3, 2], [1, 3, 3]]
, где первый элемент каждого подсписка является начальной точкой, второй - конечной точкой, а третий - расстоянием между двумя точки. Так, например, [0,1,2] означает, что разрыв между точкой 0 и 1 равен 2.
Теперь я хочу использовать информацию в таблице, чтобы построить другой список списков (называемых расстояниями), содержащий все расстояния между всеми точками. Чтобы я мог, например, назвать расстояния [0] [2] (имеется в виду, что мне нужно расстояние между точкой 0 и точкой 2, поэтому на выходе должно быть 3).
Однако у меня возникают проблемы с правильным разделением даты и таблицы и расстоянием между ними. Пока мой код такой:
dstFromOnePoint = []
distances = []
numberOfPoints = 4 #0,1,2,3
for i in range(numberOfPoints): #loops through all start points
for j in range(numberOfPoints): # loops through all endpoints
for val in table:
if (val[0] == i and val[1] == j) or (val[0] == j and val[1] == i): # checks start node , end node
dst = val[2]
dstFromOnePoint.append(dst)
elif (i==j): #distance from one point to itself will be 0
dstFromOnePoint.append(0)
distances.append(dstFromOnePoint)
print(distances)
print(distances[0][2])
Вывод, который я получаю:
[[0, 0, 0, 0, 0, 0, 2, 3, 2, 2, 0, 0, 0, 0, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 2, 2, 3, 2, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 2, 3, 2, 2, 0, 0, 0, 0, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 2, 2, 3, 2, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 2, 3, 2, 2, 0, 0, 0, 0, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 2, 2, 3, 2, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 2, 3, 2, 2, 0, 0, 0, 0, 0, 0, 1, 3, 3, 1, 0, 0, 0, 0, 0, 0, 2, 2, 3, 2, 0, 0, 0, 0, 0, 0]]
0
Вывод, который я должен получить:
[[0,2,3,2], [2,0,1,3], [3,1,0,2], [2,3,2,0]]
3
Я думаю, что я неправильно использую свои циклы, потому что я заканчиваю тем, что добавляю один и тот же список несколько раз, но даже просто просматривая один отдельный подсписок, у меня нет правильных значений, поэтому у меня, вероятно, есть другие проблемы, которые я не знаю, как исправить?