有没有办法在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([])
放在第一个循环中。仍然对其他方法感到好奇。
答案 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