亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如果它們不在預選列表中,如何遍歷圖中的邊

如果它們不在預選列表中,如何遍歷圖中的邊

動漫人物 2022-07-26 21:02:54
我正在過濾邊的子集,以便可以遍歷它們。在這種情況下,我排除了“末端邊緣”,它們是沿鏈的最終邊緣:import networkx as nxgraph = nx.Graph()graph.add_edges_from([(0, 1), (1, 2), (2, 3), (3, 4)])end_nodes = [n for n in graph.nodes if nx.degree(graph, n) == 1]end_edges = graph.edges(end_nodes)print(f"end edges: {end_edges}")for edge in graph.edges:    if edge not in end_edges:        print(f"edge {edge} is not an end edge.")    else:        print(f"edge {edge} is an end edge.")但是,當您運行此代碼時,您會得到以下輸出:end edges: [(0, 1), (4, 3)]edge (0, 1) is an end edge.edge (1, 2) is an end edge.edge (2, 3) is an end edge.edge (3, 4) is an end edge.Edges (1, 2)and (2, 3)are not in end_edges,但它在檢查False條件時返回edge not in end_edges(似乎暗示它實際上被包含,而它似乎不包含)。發生了什么事,我該如何正確過濾?Python 版本是 3.7,NetworkX 是 2.4。
查看完整描述

2 回答

?
胡子哥哥

TA貢獻1825條經驗 獲得超6個贊

您可以將 end_nodes 轉換為一組邊并保持邊無序。


>>> graph = nx.Graph()

>>> graph.add_edges_from([(0, 1), (1, 2), (2, 3), (3, 4)])

>>> end_nodes = [n for n in graph.nodes if nx.degree(graph, n) == 1]

>>> end_edges = set(map(frozenset, graph.edges(end_nodes)))

>>> end_edges

{frozenset({3, 4}), frozenset({0, 1})}

>>> for edge in graph.edges:

...     print(edge, frozenset(edge) in end_edges)

... 

(0, 1) True

(1, 2) False

(2, 3) False

(3, 4) True


查看完整回答
反對 回復 2022-07-26
?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

import networkx as nx


graph = nx.Graph()

graph.add_edges_from([(0, 1), (1, 2), (2, 3), (3, 4)])

end_nodes = [n for n in graph.nodes if nx.degree(graph, n) == 1]

end_edges = graph.edges(end_nodes)

print(f"end edges: {end_edges}")

for edge in graph.edges:

    if edge not in list(end_edges):

        print(f"edge {edge} is not an end edge.")

    else:

        print(f"edge {edge} is an end edge.")


查看完整回答
反對 回復 2022-07-26
  • 2 回答
  • 0 關注
  • 82 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號