这无疑是由于我对Python缺乏了解。。。但为什么这对igraph无效呢?在
import igraph
g=igraph.Graph()
verts = {'1','2','3'}
g.add_vertices(verts)
for v in g.vs:
print v
输出:
^{pr2}$我本来希望得到以下输出(我用add_vertices(list(verts))
得到):
igraph.Vertex(<igraph.Graph object at 0x106347af8>,0,{'name': '1'})
igraph.Vertex(<igraph.Graph object at 0x106347af8>,1,{'name': '3'})
igraph.Vertex(<igraph.Graph object at 0x106347af8>,2,{'name': '2'})
^{
add_vectirces(n)
n
- the number of vertices to be added, or the name of a single vertex to be added, or an iterable of strings, each corresponding to the name of a vertex to be added. Names will be assigned to the name vertex attribute.
我认为verts
是一个有效的字符串iterable。我的错误在哪里?在
从图source:
将该顶点序列片段中每个顶点的
name
属性分配给names
中的值似乎是合理的。如果这是在纯Python中完成的,它将简单地传递为解包,但Graph
类子类是用c编写的GraphBase
所以行为只能用结果来描述。如果传递无序的
iterable
(set
和dict
),顶点序列的每个属性都将iterable
本身作为值,但是如果传递有序的iterable(比如tuple
或list
),则值是unpacked(不是python意义上的),并分配给vs
的那一部分。在您可以通过在以下位置重复代码段来确认:
^{pr2}$以及
但是
frozensets
?在嗯
frozensets
也是不可订阅的,因此C代码只需重复与set
相同的行为。在但对于Python中的索引无效。我想文件需要整容。在
相关问题 更多 >
编程相关推荐