微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

N次迭代后如何停止圣人图生成迭代器?

如何解决N次迭代后如何停止圣人图生成迭代器?

我想使用 sagemath 的 graph.planar_graphs 迭代器创建 N 个平面图。问题是这个函数返回所有可能的平面图给定一定数量的顶点。我想做的是:

while len(gen) < N:
    gen = list(graphs.planar_graphs(50))

所以最后,我想要一个包含前 N 个生成的平面图的列表,而不是全部(因为那是更多数量级的图并且计算成本非常高)。

解决方法

迭代器的一个好处是你可以抓住 任意多或少的元素。

所有 50 阶平面图的迭代器:

sage: planar_50 = graphs.planar_graphs(50)

抓住前四个:

sage: planar_50_4 = [next(planar_50) for _ in range(4)]

检查:

sage: planar_graphs_order_k_first_n(50,4)
[Graph on 50 vertices,Graph on 50 vertices,Graph on 50 vertices]

把它变成一个函数:

def planar_graphs_order_k_first_n(k,n):
    pg = graphs.planar_graphs(k)
    return [next(pg) for _ in range(n)]

使用它:

planar_graphs_order_k_first_n(50,Graph on 50 vertices]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。