小工具——寻找节点的一二三阶邻居

日常小工具,本人代码水平一般,只是存在这里当笔记。若正好有小伙伴用到,希望能帮助到你,如若有错误之处,欢迎批评指正。
输入:图以及图中一个节点
输出:该节点在图中的一阶,二阶,三阶邻居

import networkx as nx

def find123Nei(G, node):
    nodes = list(nx.nodes(G))
    nei1_li = []
    nei2_li = []
    nei3_li = []
    for FNs in list(nx.neighbors(G, node)):  # find 1_th neighbors
        nei1_li .append(FNs)

    for n1 in nei1_li:
        for SNs in list(nx.neighbors(G, n1)):  # find 2_th neighbors
            nei2_li.append(SNs)
    nei2_li = list(set(nei2_li) - set(nei1_li))
    if node in nei2_li:
        nei2_li.remove(node)

    for n2 in nei2_li:
        for TNs in nx.neighbors(G, n2):
            nei3_li.append(TNs)
    nei3_li = list(set(nei3_li) - set(nei2_li) - set(nei1_li))
    if node in nei3_li:
        nei3_li.remove(node)

    return nei1_li, nei2_li, nei3_li

举个栗子,输入下面图,并寻找1号节点的一二三阶邻居:
在这里插入图片描述

h = nx.Graph()
h.add_nodes_from(list(range(1, 8)))
h.add_edges_from([(1, 2), (1, 3), (1, 5), (1, 4), (2, 8), (2, 6), (3, 6), (4, 7)])

neighbors = find123Nei(G, 1)
print(neighbors[0])  # 输出节点的一阶邻居
print(neighbors[1])  # 输出节点的二阶邻居
print(neighbors[2])  # 输出节点的三阶邻居

输出结果如下: [2, 3, 5, 4], [6, 7, 8, 9, 10], [11, 12, 13]

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值