我在python中使用networkx包创建了一个简单的图形,如下面的代码所示:
import networkx as nx
import pandas as pd
import numpy as np
G=nx.Graph()
G.add_node(1)
G.add_node(2)
G.add_node(3)
G.add_node(4)
G.add_node(5)
G.add_node(6)
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(1,5)
G.add_edge(4,6)
然后,我定义了一个接收以下参数的函数:
递归函数:
def recurse(G, z , node):
z.append(node)
n = list(set(G.neighbors(node)) - set(z))
if len(n) == 0:
return []
else:
for i in n:
if i not in z:
return z.extend(recurse(G, z, i))
并使用以下代码测试了该函数:
z = []
f = recurse(G,z,1)
假设返回以下列表 - > [1,2,3,5]
但在尝试执行代码时遇到以下错误:
TypeError Traceback (most recent call last)
<ipython-input-91-143154073995> in <module>()
14
15 z = []
---> 16 f = recurse(G,z,1)
<ipython-input-91-143154073995> in recurse(G, z, node)
11 for i in n:
12 if i not in z:
---> 13 return z.extend(recurse(G, z, i))
14
15 z = []
TypeError: 'NoneType' object is not iterable
我已经打印了该功能的每一步,并注意到该列表已建立,直到它具有以下值 - &gt; [1,2,3]然后失败
任何想法??
由于
答案 0 :(得分:1)
list.extend
返回None
而不是列表扩展。
试试这个:
z.extend(recurse(G, z, i))
return z