2014-10-11 20 views
4

我试图打印图形的连接组件。但其印刷发电机的对象。在python中打印图形的连接组件

这是我graph.py

import networkx as nx 
import matplotlib.pyplot as plt 
#import math 
import csv 
#import random as rand 
import sys 

def buildG(G, file_, delimiter_): 
    #construct the weighted version of the contact graph from cgraph.dat file 
    reader = csv.reader(open(file_), delimiter=delimiter_) 
    for line in reader: 
     if float(line[2]) != 0.0: 
      G.add_edge(int(line[0]),int(line[1]),weight=float(line[2])) 

def main(): 
    graph_fn="tempset3.txt"; 
    G = nx.Graph() #let's create the graph first 
    buildG(G, graph_fn, ',') 

    print G.nodes() 
    print G.number_of_nodes() 

    #nx.draw(G) 
    #plt.show(G) 

    n = G.number_of_nodes() 
    print ("no of nodes: ", n) 
    comps=nx.connected_components(G) 
    print comps 

main() 

这是我tempset3.txt

0,1,9 
1,3,5 
1,4,17824 
2,5,1199 
2,6,729 
5,7,619 
5,8,241 
5,10,227 
7,8,4 

当我运行它,它给:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 10] 
10 
('no of nodes: ', 10) 
<generator object connected_components at 0x360f140> 

如何打印连接组件正确???

输出应该是:[[0,1,3,4],[2,5,6,7,8,10]]

回答

5

就在generator对象上使用listprint (list(comps))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 10] 
10 
no of nodes: 10 
[[0, 1, 3, 4], [2, 5, 6, 7, 8, 10]] 

或者遍历生成器对象:

for comp in comps: 
     print (comp) 
[0, 1, 3, 4] 
[2, 5, 6, 7, 8, 10]