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

NetworkX中列表推导式替代嵌套循环后如何输出等价子图信息?

解决方法

首先要注意:你当前的列表推导式循环顺序和原嵌套循环不一致——原循环是先执行2次外层循环,每次遍历所有邻居;而你的列表推导式是先遍历邻居,每个邻居重复2次,会导致输出顺序不同。如果要和原循环顺序完全一致,需要调整列表推导式的循环顺序为[graph.subgraph(neighbor) for _ in range(2) for neighbor in graph.adj[i]]。

接下来解决输出形式的问题:直接打印列表时,Python会对每个元素调用repr(),而直接打印单个NetworkX Graph对象时会调用str()(对应你需要的详细信息格式)。要得到和原循环等价的输出,有以下几种实用方式:

方式1:逐个打印子图

直接遍历生成的子图对象并打印,和原循环输出完全一致:

for subgraph in (graph.subgraph(neighbor) for _ in range(2) for neighbor in graph.adj[i]):
    print(subgraph)

(用生成器表达式可以避免创建临时列表,节省内存)

方式2:一次性拼接输出

如果想一次性输出所有内容,用'\n'拼接所有子图的字符串形式:

print('\n'.join(str(graph.subgraph(neighbor)) for _ in range(2) for neighbor in graph.adj[i]))

方式3:生成字符串列表后处理

如果需要保留子图的详细信息字符串用于后续操作,可先生成字符串列表再打印:

subgraph_details = [str(graph.subgraph(neighbor)) for _ in range(2) for neighbor in graph.adj[i]]
for detail in subgraph_details:
    print(detail)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:51:41