我把一个图的边表示为(node\ u from,node\ u to)。你知道吗
我想有效地生成形式(0,x)的2条边的所有组合,其中0是我的图中的节点0-与形式(x,n)的2条边的所有组合一起,其中n是我的图中的“最终节点”(我知道是任意的)。我已经在一个集合中有了所有的边,或者每个节点都包含一个到其他节点的边(例如,您可以直接遍历范围来生成组合)。你知道吗
一个有效的组合可能是
我想说清楚,我想要的是组合而不是排列。我不想重复使用同一组。你知道吗
我一般都很擅长弄清楚这件事,但我在这件事上有点麻烦。你知道吗
编辑:更新以满足“只有两个开始/结束边缘”的要求
我不确定您想使用什么接口,但据我所知,您可以使用
filter()
来选择“以0
开始”或“以n
结束”的边子集。你知道吗现在可以使用
itertools.combinations()
从每个列表生成所有可能的对。举个例子:现在您可以插入
itertools.product()
来生成“来自一个列表的对”和“来自另一个列表的对”的所有组合:就这样!如果愿意,可以“展平”数据结构,但这是可选的:
现在让我们把结果打印出来:
相关问题 更多 >
编程相关推荐