[英]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.