You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Networkx common_neighbors过滤异常,无法正确返回公共邻居列表

异常原因
  • nx.common_neighbors返回的是迭代器对象,迭代器仅支持单次遍历,首次通过list(neighbor)计算长度时就已经将迭代器清空,后续所有对该迭代器的打印、遍历、排序操作都会得到空结果
  • 原代码中filtered_nodes、neighbors变量未提前初始化,也会导致后续运行报错
修复方案

首次获取公共邻居时就直接转为列表保存,后续所有操作都复用这个列表即可,修正后的代码如下:

# 提前初始化变量
filtered_nodes = [central_node] # 先保留中心节点a
neighbors = {}

for node in subgraph.nodes:
    if node == central_node: # 跳过中心节点自身对比逻辑
        continue
    # 首次取值就转为列表存储,后续所有操作复用该列表
    common_nei_list = list(nx.common_neighbors(subgraph, central_node, node))
    n = len(common_nei_list)
    print(node, n)
    print(common_nei_list)
    if n >= 3: # 匹配公共邻居数≥3的筛选规则
        neighbors[node] = n
        filtered_nodes.append(node)
        filtered_nodes.extend(sorted(common_nei_list))

# 对筛选后的节点去重,避免重复添加
filtered_nodes = list(set(filtered_nodes))
# 生成最终过滤后的子图
filtered_graph = subgraph.subgraph(filtered_nodes)
效果验证

运行后可以看到节点e的公共邻居列表为['b', 'c', 'g'],长度为3符合筛选条件,和你预期的输出结果一致。

内容的提问来源于stack exchange,提问作者NicolasP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:09:01