有没有办法在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([])放在第一个循环中。不过,我仍然对其他方法感到好奇。
发布于 2011-07-10 08:32:57
您不需要创建空列表。您可以使用列表理解来构建嵌套列表:
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, ...], ...], ...]发布于 2011-07-10 08:14:53
也许:
thirdgen = [list() for x in range(len(secgen))]
thirdgen = [list() for x in range(11)]或者我可能误解了实际的问题。
发布于 2011-07-10 08:15:16
您可以按如下方式使用列表生成器:[[] for x in range(11)]。
https://stackoverflow.com/questions/6638339
复制相似问题