创建一个列表(节点),然后创建一个二维列表(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数据附加到nodeRTT中?
例如:
nodesRTT[currNode].append(rttCur)]
答案 0 :(得分:2)
len(nodes)
在声明的行中求值。它开始是0
,并且由于它的值永远不会被代码更新,因此它将保持为零。defaultdict(list)
代替2D列表。然后,您可以直接执行nodesRTT[currNode].append(rttCur)]
。由于您是根据节点值而不是位置进行引用,因此dict是更合适的数据结构。答案 1 :(得分:1)
根据粘贴的代码,如果在行中找到字符串“ from Node:”,并且该节点尚不存在,则将扩展节点列表。仅当行中存在字符串“ RTT:”时,节点RTT才会更新。
对于第二个问题,您可以看一下下面的代码,您将了解如何在2d列表中追加:
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])
答案 2 :(得分:0)
多维数组附加示例:
nodeList = []
nodeSizeList = []
nodeOne = "nodeOne"
nodeList.append(nodeOne)
nodeSizeList.append([nodeList[0],len(nodeOne)])
print(nodeList) # ['nodeOne']
print(nodeSizeList) # [['nodeOne', 7]]