簡體   English   中英

N次迭代后如何停止sage圖生成迭代器?

[英]How to stop sage graph generating iterator after N iterations?

我想使用 sagemath 的 graph.planar_graphs 迭代器創建 N 個平面圖。 問題是這個 function 返回給定一定數量的頂點的所有可能的平面圖。 我想做的是:

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,
 Graph on 50 vertices]

把它變成 function:

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, 4)
[Graph on 50 vertices,
 Graph on 50 vertices,
 Graph on 50 vertices,
 Graph on 50 vertices]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM