Создайте список (узлы), а затем создайте двумерный список (nodesRTT) с размером списка узлов. Внутри скрипта есть код, который обнаруживает следующие значения:
nodes = []
nodesRTT = [[len(nodes)]]
if " from Node:" in line:
pos = int(line.rpartition('Msg from Node:')[2])
if pos in nodes:
index = nodes.index(pos) # the node already exists
else: # node is new, just add it in the nodes list
nodes.append(pos)#expand the array
# more search code................
if "RTT:" in line:
rttCur=int(line.rpartition(":")[2])
currNode = int(line.split(':')[1])
Вопросов:
Обновляется ли nodeRTT каждый раз, когда список узлов расширяется?
Как мне добавить данные RTT узла в nodesRTT?
Например:
nodesRTT[currNode].append(rttCur)]






len(nodes) вычисляется в той строке, в которой оно объявлено. Он начинается с 0, и, поскольку его значение никогда не обновляется кодом, оно останется нулевым.defaultdict(list). Затем вы можете напрямую выполнить nodesRTT[currNode].append(rttCur)]. Поскольку вы ссылаетесь на значение узла, а не на позицию, dict является более подходящей структурой данных.Пример добавления многомерного массива:
nodeList = []
nodeSizeList = []
nodeOne = "nodeOne"
nodeList.append(nodeOne)
nodeSizeList.append([nodeList[0],len(nodeOne)])
print(nodeList) # ['nodeOne']
print(nodeSizeList) # [['nodeOne', 7]]
Из кода, который вы вставили, список узлов расширяется, если строка "from Node:" найдена в строке и если этот узел еще не существует. Где в качестве узловRTT обновляется только тогда, когда в строке присутствует строка «RTT:».
Что касается второго вопроса, вы можете взглянуть на приведенный ниже код, вы получите представление о том, как добавить в 2-й список:
a = [[2]]
b = 3
d = []
d.append(b) #Appending in 1d list
a.append(d) #Appending in 2d list
print(a[0][0])
print(a[1][0])