python中的多维列表插入

时间:2018-08-15 18:46:08

标签: python

创建一个列表(节点),然后创建一个二维列表(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])

问题:

  1. 每次扩展节点列表时,nodeRTT也会更新吗?

  2. 如何将节点的RTT数据附加到nodeRTT中? 例如: nodesRTT[currNode].append(rttCur)]

3 个答案:

答案 0 :(得分:2)

  1. 不。表达式len(nodes)在声明的行中求值。它开始是0,并且由于它的值永远不会被代码更新,因此它将保持为零。
  2. 使用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]]