如何在Python中创建可索引的空列表?
有没有简单的方法可以在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([])
来实现。不过我还是对其他方法感兴趣。
3 个回答
2
也许是这样:
thirdgen = [list() for x in range(len(secgen))]
thirdgen = [list() for x in range(11)]
或者我可能误解了真正的问题。
2
你可以这样使用列表生成器:[[] for x in range(11)]
。
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, ...], ...], ...]
// 这是第三层列表,里面有多个第二层列表