如何在python中创建可索引的空列表?

时间:2011-07-10 00:11:13

标签: python arrays list

有没有办法在python中巧妙地创建大型(即可索引)空列表?

这就是我现在正在做的事情:

firstgen=G.neighbors(node1)
secgen=[]
thirdgen=[[],[],[],[],[],[],[],[],[],[],[]]  #11 brackets because len(secgen)=11

for i in firstgen:
    secgen.append(G.neighbors(i))   

for i in range(len(secgen)):
    for j in secgen[i]:
        thirdgen[i].append(G.neighbors(j))

我正在做的是找到网络中原始节点的邻居的邻居,因此我的第三代邻居列表应该具有结构[[[...],[...], [...]] , [[...],[...],[...]] , [[...],[...],[...]] ] 但我是python的新手,并且无法在不手动输入thirdgen的长度的情况下找到如何完成此工作。

很抱歉这个令人困惑的解释。我这样做是为了在网络中找到三元组,即如果任何第三代节点与初始节点相同,那么我找到了一个三元组。

谢谢!

编辑:我刚刚意识到我可以简单地将thirdgen.append([])放在第一个循环中。仍然对其他方法感到好奇。

4 个答案:

答案 0 :(得分:3)

您无需创建空列表。您可以使用列表推导来构建嵌套列表:

firstgen = G.neighbors(node1)
secndgen = [G.neighbors(node) for node in firstgen]
thirdgen = [[G.neighbors(node) for node in group] for group in secndgen]
  • firstgen: [node, ...]
  • secndgen: [[node, ...], ...]
  • thirdgen: [[[node, ...], ...], ...]

答案 1 :(得分:2)

也许:

thirdgen = [list() for x in range(len(secgen))]
thirdgen = [list() for x in range(11)]

或者我可能误解了实际的问题。

答案 2 :(得分:2)

您可以按如下方式使用列表生成器:[[] for x in range(11)]

答案 3 :(得分:0)

查看numpy