如何在整数与可迭代之间进行选择

时间:2018-03-04 20:38:25

标签: python networkx iterable

我尝试使用以下代码构建Collat​​z图的子图:

def makecollatz(n):
    import networkx as nx
    import matplotlib.pyplot as plt
    G = nx.Graph()
    G.add_node(5)
    for r in range (n):
      for node in [x for x in G.nodes() if G.degree(x)<=1]:
      # for node in [G.nodes() if G.degree(x)<=1]:
          G.add_edges_from(newpair(node))
    nx.draw(G, with_labels=True)
    return None; # temp

def newpair (node):
    nodeset=[]
    for x in [node]:
        nodeset.extend({
            1: [[x,int((4*x-1)/3)],[x,int((16*x-1)/3)],[x,int((64*x-1)/3)]],
            2: [[x,int((2*x-1)/3)],[x,int((8*x-1)/3)],[x,int((32*x-1)/3)]]
        }[x % 3])
    return nodeset;

makecollatz(1) 

makecollat​​z()的参数确定进程绘制的迭代次数。它适用于n = 1但是对于较大的n,它似乎遇到问题,我需要将迭代发送到newpair函数但我发送一个整数。我不知道如何解决这个问题,所以它适用于所有人。我确定它很简单。

0 个答案:

没有答案