虽然循环在返回期间执行一次,但在打印期间运行良好[python]

2024-09-23 14:27:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用两个函数。我想做一个分叉图。我拥有的第一个功能是使用matplotlib制作地图

def print_bifurcation_map(initial,rmin,rmax,rstep,iterates,k):
    xn_list = []
    r_list = []

    for r in np.linspace(rmin, rmax,rstep):
        xn = []
        xn.append(run_logistic(initial,r,iterates))
        xn_list =xn_list + xn[-k:]


        r_list = r_list + [r]*len(xn)

这段代码的作用是在x接近一个大数字(迭代)时,取一个范围的Rs并计算极限。我们从列表中选取最后的k个数字。它调用下面的函数run_logistic

def run_logistic(xn,r,iterates):
    iteration = 1
    while iteration <= iterates:
        xn1 = logistic_map(xn,r)
        iteration = iteration + 1
        xn = xn1
        print xn

这就是事情变得有点奇怪的地方。当我通过函数“print\u\u map”使用return和call时,它运行一次并追加一次。但是,如果我将return xn改为“print xn”,这就是现在代码块中的内容,它似乎运行得更正确,尽管速度非常慢

那么,我在打印映射定义或运行逻辑函数中的错误之处是什么呢。下面是逻辑图功能

def logistic_map(xn,r):
    xn1 = r*xn*(1-xn)
    return xn1

Tags: 函数run功能mapreturndeflistinitial
1条回答
网友
1楼 · 发布于 2024-09-23 14:27:54

return在该点退出函数并输出返回值。因此,在第一次迭代之后,返回值,然后就完成了

您试图对函数run_logistic执行什么操作?返回最终值或获得的所有值

如果需要最终值,则-

def run_logistic(xn,r,iterates):
    iteration = 1
    while iteration <= iterates:
        xn1 = logistic_map(xn,r)
        iteration = iteration + 1
        xn = xn1
    return xn # Put return outside while-loop to get final value

否则,如果需要所有值,则创建一个要附加到并返回该列表的列表

def run_logistic(xn,r,iterates):
    iteration = 1
    xn_list = []
    while iteration <= iterates:
        xn1 = logistic_map(xn,r)
        iteration = iteration + 1
        xn = xn1
        xn_list.append(xn)
    return xn_list # Put return outside while-loop to get full list of values

相关问题 更多 >