Python 从sagemath lambda语句将下划线函数视为有序对
在sagemath中,我使用以下方法成功地查看了大小为n的集合上的所有函数有向图的集合,例如,对于n=3Python 从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(在引擎盖下))这样做的,还是仅仅
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可能不会使用
这些有向图的基本函数。这正是我需要的,您的解释有助于理解。我将探究来源。再次感谢!这正是我需要的,你的解释有助于理解。我将探究来源。再次感谢!