Skip to content

建立 2026-09-14 更新 2026-09-14

節點與邊

圖是長出來的:先建空圖,再加節點與邊;或直接把邊串列丟進建構函式。加邊時,若端點還不存在,NetworkX 會自動建立那些節點。

新增節點

import networkx as nx

G = nx.Graph()
G.add_node(1)
G.add_nodes_from([2, 3])
G.add_nodes_from([(4, {"color": "red"}), (5, {"color": "green"})])

節點可以是任何可雜湊(hashable)物件:整數、字串、元組、甚至函式物件。不能None

G.add_node("台北")
G.add_node((25.03, 121.56))  # 例如經緯度元組

可變物件當節點

list、dict 不可雜湊,不能當節點。若節點內容會變,且雜湊依賴內容,事後改它會讓圖壞掉。不確定時,用整數或字串當 ID,真正的資料放在節點屬性裡。

新增邊

G.add_edge(1, 2)
G.add_edge(2, 3, weight=0.9)
G.add_edges_from([(1, 3), (1, 4)])
G.add_edges_from([(5, 6, {"weight": 3.14})])

邊是 2-tuple (u, v),或 3-tuple (u, v, attr_dict)。重複加入已存在的邊不會報錯;在 Graph 裡通常只是更新屬性。

計數與清空

G.number_of_nodes()
G.number_of_edges()
G.clear()  # 刪光節點與邊,物件本身還在

刪除

刪節點時,連到它的邊會一起消失:

G.remove_node(2)
G.remove_nodes_from([4, 5])
G.remove_edge(1, 3)
G.remove_edges_from([(1, 4)])

刪不存在的節點或邊會丟例外。若不確定有沒有,先檢查,或用 G.has_node() / G.has_edge()

常見陷阱:字串當 iterable

G.add_node("spam")        # 一個節點,名稱是 "spam"
G.add_nodes_from("spam")  # 四個節點:'s', 'p', 'a', 'm'

add_nodes_from 會走訪容器。字串是字元序列,所以會被拆開。要加多個字串節點,請傳 list:["spam", "eggs"]

下一頁

節點與邊都可以掛資料,見 屬性。要看圖裡有什麼,見 檢視與走訪