Я пытаюсь написать программу, которая выполняет итерации i, j и k и находит минимальное значение по определенной формуле (vik + vkj - vij), где v - это 2-й список расстояний между точками, k - это новый точка два будет вставлена в новый массив, а i, j - существующие значения в новом массиве. Извините, если это объяснение немного сбивает с толку ...
Мой код такой:
values = [[0,2],[3,3],[4,5],[2,1],[7,1]]
points = [0,1,2,3,4]
new = [2,4]
for k in points: #k is the point that will be inserted
minVal = 1000000000000000 #set to any arbitrarily high value, that will be larger than any other distance
for i,j in new:
nextVal = values[i][k] + values[k][j] - values[i][j] # finds value which minimises vik + vkj - vij
if nextVal < minVal:
minVal = nextVal
idx = i #saves index of i,j that gave minimal value, so that k can be inserted between these
jdx = j
new.insert(idx + 1, k) #insert after idx or before jdx
В любом случае, я получаю сообщение:
for i,j in new:
TypeError: 'int' object is not iterable
Я где-то читал что это потому, что объекты типа int не могут быть повторены, но я не понимаю, как еще решить эту проблему.
Как сделать так, чтобы два отдельных значения перебирали список целых чисел, при этом помня, что я помню, какие два значения i, j дали минимальное значение, чтобы затем я мог добавить k между ними?