Python 从sagemath lambda语句将下划线函数视为有序对

Python 从sagemath lambda语句将下划线函数视为有序对,python,lambda,graph-theory,discrete-mathematics,sage,Python,Lambda,Graph Theory,Discrete Mathematics,Sage,在sagemath中,我使用以下方法成功地查看了大小为n的集合上的所有函数有向图的集合,例如,对于n=3 property= lambda G: all(G.out_degree(v) <= 1 for v in G) L = filter(property, digraphs(3)) #M=list(digraphs(3)) #len(M) len(L) graphs_list.show_graphs(L) 更一般地说,我想我想知道代码是(通过sage(在引擎盖下))这样做的,还是仅仅

在sagemath中,我使用以下方法成功地查看了大小为n的集合上的所有函数有向图的集合,例如,对于n=3

property= lambda G: all(G.out_degree(v) <= 1 for v in G)
L = filter(property, digraphs(3))
#M=list(digraphs(3))
#len(M)
len(L)
graphs_list.show_graphs(L)

更一般地说,我想我想知道代码是(通过sage(在引擎盖下))这样做的,还是仅仅引入一个图论库,其中实际的“函数”是模糊的

默认情况下,Sage将顶点编号为
0
1
2
,而不是
a
b
c

这几乎满足了您的需求:

sage: for g in L:
....:     print g.edges(labels=False)
....:
[]
[(0, 1)]
[(0, 1), (1, 0)]
[(0, 1), (1, 2)]
[(0, 1), (1, 2), (2, 0)]
[(0, 1), (2, 1)]
[(0, 1), (1, 0), (2, 1)]
这将更接近您想要的输出

sage: def im(g, v):
....:     n = g.neighbors(v)
....:     return v if not n else n[0]
....: 
sage: for g in L:
....:     print('{' + ','.join(['({},{})'.format(v, im(g, v)) for v in g.vertices()]) + '}')
....:     
{(0,0),(1,1),(2,2)}
{(0,1),(1,0),(2,2)}
{(0,1),(1,0),(2,2)}
{(0,1),(1,0),(2,1)}
{(0,1),(1,0),(2,0)}
{(0,1),(1,0),(2,1)}
{(0,1),(1,0),(2,1)}
关于Sage在引擎盖下做什么,探索 源代码,并让我们知道你发现了什么

但是请注意,您获得了函数有向图列表 通过过滤所有有向图的列表,因此Sage可能不会使用
这些有向图的基本函数。

默认情况下,Sage对顶点进行编号
0
1
2
,而不是
a
b
c

这几乎满足了您的需求:

sage: for g in L:
....:     print g.edges(labels=False)
....:
[]
[(0, 1)]
[(0, 1), (1, 0)]
[(0, 1), (1, 2)]
[(0, 1), (1, 2), (2, 0)]
[(0, 1), (2, 1)]
[(0, 1), (1, 0), (2, 1)]
这将更接近您想要的输出

sage: def im(g, v):
....:     n = g.neighbors(v)
....:     return v if not n else n[0]
....: 
sage: for g in L:
....:     print('{' + ','.join(['({},{})'.format(v, im(g, v)) for v in g.vertices()]) + '}')
....:     
{(0,0),(1,1),(2,2)}
{(0,1),(1,0),(2,2)}
{(0,1),(1,0),(2,2)}
{(0,1),(1,0),(2,1)}
{(0,1),(1,0),(2,0)}
{(0,1),(1,0),(2,1)}
{(0,1),(1,0),(2,1)}
关于Sage在引擎盖下做什么,探索 源代码,并让我们知道你发现了什么

但是请注意,您获得了函数有向图列表 通过过滤所有有向图的列表,因此Sage可能不会使用
这些有向图的基本函数。

这正是我需要的,您的解释有助于理解。我将探究来源。再次感谢!这正是我需要的,你的解释有助于理解。我将探究来源。再次感谢!