我有两个网络G
和G1
,它们是用networkx
生成的。你知道吗
为了找到包含两个网络(即交叉点)之间的唯一节点的列表,我在Python 2.7
中运行了下面的命令,该命令非常有效。你知道吗
tmp2 = list(set(G.nodes) & set(G1.nodes))
在具有Python 3
的计算机中,相同的命令返回以下错误:
TyperError: 'method' object is not iterable
有没有办法避免Python 3.x
中的这个错误?你知道吗
Tags:
在networkx版本1.x中,
G.nodes
是一个方法,它返回G
的节点。G.nodes()
是G
的节点列表。因此,对set(G.nodes)
的调用要求Python对一个方法进行设置。那不可能。它可以把G
的节点放在一起。所以set(G.nodes())
起作用了。你知道吗在版本2.x中,
G.nodes
和G.nodes()
都是NodeView
对象。这些操作非常类似于列表(尽管有区别)。你知道吗因此,您的命令将在最新版本的networkx中运行,但不会在旧版本中运行。即使您切换到使用
2.x
,我建议仍将其称为G.nodes()
,以防代码在早期版本中运行。你知道吗这个错误表明
nodes
是python3中的一个方法,因此应该将代码更改为list(set(G.nodes()) & set(G1.nodes()))
,以便实际调用它。你知道吗相关问题 更多 >
编程相关推荐