python添加節點
1. 如何利用python 的 networkx從文件中讀數據加節點和邊
如何利用python 的 networkx從文件中讀數據加節點和邊
譯Python之前您最好先安裝一系列的開發工具和一些拓展庫,雖然不是必須的,但這樣Python才能依賴這些工具和拓展庫展示它強悍的功能。下面是利
用yum進行工具和拓展庫安裝的示例命令,直接執行即可(注意部分命令顯示不全,但可以通過移動游標查看和復制)。
yumgroupinstall"Development tools"
yuminstallzlib-develbzip2-developenssl-develncurses-develsqlite-develreadline-develtk-develgdbm-develdb4-devellibpcap-develxz-devel
該考慮的因素
在您編譯和安裝Python之前,有些東西您是應該知道或考慮的。如下。
Unicode編碼
Python
編碼問題歷史悠久,但不用過多關注,知道它目前支持Unicode編碼即可(Python3中默認的)。考慮到兼容性等原因,除非有特殊的理由,您最好配
置下Python 3.2和更早的版本,使其支持UTF-32編碼,雖然會增加小小的內存代價。
2. python 單向鏈表問題
不會。
實際上,SingleLinkedList只存儲了鏈表的表頭節點的位置。
每次調用add函數,相當於新建了一個節點,
調用setNext將其下一節點指向現在鏈表的表頭,
然後將新建的節點位置作為新的表頭位置保存在鏈表裡面。
要得到鏈表的所有節點必須從表頭節點開始一個一個往下跳轉,一直跳轉到下一節點位置為None,則表示查詢完畢。
3. 請教一下python qt treewidget的樹狀結構怎麼向指定節點插入內容
1. 樹形結構實現 qt gui中有treewidget部件,將該...同時還有刪除指定節點(父節點和子節點同時刪除)的...c c++ javascript
4. 如何用python實現網路圖節點權重的添加以及如何把一個非連通的大網路圖分成多個小網路圖
networkx是python的一個庫,它為圖的數據結構提供演算法、生成器以及畫圖工具。近日在使用ryu進行最短路徑獲取,可以通過該庫來簡化工作量。該庫採用函數方式進行調用相應的api,其參數類型通常為圖對象。
函數API的調用,按照以下步驟來創建構建圖:
1.networkx的載入
在python中調用networkx通常只需要將該庫導入即可
import networkx as nx
2.圖對象的創建
networkx提供了四種基本圖對象:Graph,DiGraph,MultiGraph,MultiDiGraph。
使用如下調用方式,可以創建以上四種圖對象的空圖。
G=nx.Graph()
G=nx.DiGraph()
G=nx.MultiGraph()
G=nx.MultiDiGraph()
在 networkx中,圖的各個節點允許以哈希表對象來表示,而對於圖中邊的各個參量,則可以通過與邊相關聯的方式來標識,一般而言,對於權重,用weight作為keyword,而對於其他的參數,使用者可以採用任何除weight以外的keyword來命名。
3.在2中,創建的只是一副空圖,為了得到一個有節點、有邊的圖,一般採用下面這個函數:
1
2
G.add_edge(1,2) #default edge data=1
G.add_edge(1,2) #specify edge data=0.9
add_edge()函數,該函數在調用時需要傳入兩個參數u和v,以及多個可選參數
u和v即圖中的兩個節點,如果圖中不存在節點,在調用時會自動將這兩個節點添加入內,同時構建兩個節點之間的連接關系,可選參數通常指這條邊的權重等關系參量。需要注意的是,如果圖中已經存在了這條邊,重新進行添加時會對這條邊進行跟新操作(也就是覆蓋了原有的信息)。
對於該函數,除了上述的構建方式以外,還有以下幾種方式來創建邊:
1
2
3
G.add_edge(*e) # single edge as tuple of two nodes
G.add_edge(1, 3, weight=7, capacity=15, length=342.7) #using many arguements to create edge
G.add_edges_from( [(1, 2)] ) # add edges from iterable container
有時候,當採用默認方式創建邊以後,我們可能還會往邊裡面添加邊的相關參數,這時候,可以採用下面的方式來更新邊的信息:
1
2
3
4
5
#For non-string attribute keys, use subscript notation.
G.add_edge(1, 2)
G[1][2].update({0: 5}) #更新邊的信息
G.edges[1, 2].update({0: 5}) #更新邊的信息
#上述兩種更新方式,擇一選取即可
細心的朋友可能注意到我在寫創建圖的內容的時候,提到了add_edges_from()函數,該函數也是用來創建邊的,該方式與add_edges()略有不同,比之add_edges()採用一個一個節點的方式進行創建,它來的更為便利。這個函數在調用時,需要一個節點元組作為參數以及多個可選參數作為邊的信息。你可以這么傳遞:
默認創建節點之間的邊:
1
G.add_edges_from([(u,v)])
也可以這么寫,在創建的同時添加信息:
1
G.add_edges_from([(3, 4), (1, 4)], label='WN2898')
通過上述方式,就構建了一個3-4-1的圖的連接,並給每條邊打上了標簽。
由此你就可以創建出自己的圖模型了。
5. python怎麼向已經存在的xml文件中追加填入數據
直接操作文件肯定不現實,只能先使用python自帶模塊xml.etree 解析xml,然後找到對應的節點把數據添加進去,重新寫入文件。
6. 如何使用Python的networkx模塊來生成節點列表完全連通子圖
path=nx.all_pairs_shortest_path(G) #調用多源最短路徑演算法,計算圖G所有節點間的最短路徑 print path[0][2] #輸出節點0、2之間的最短路徑序列: [0, 1, 2]