有关在python中迭代函数的问题

时间:2019-07-18 01:01:40

标签: python function for-loop return-value

我使用python创建了此功能

import numpy as np
p1=1/2


def qud(x,p):
    x_sqr = x**2
    x_qud = x**3
    pn=x_sqr*p
    return x_sqr ,x_qud,pn

我需要多次迭代此函数,方法是在上一次迭代中提供 pn 的值。

我没有这样的for循环尝试过

第一次迭代sqr1, qud1 ,pnew = qud(2,p1)

第二次迭代sqr2, qud2 ,pnew1 = qud(2,pnew)

其中我使用了从第一次迭代获得的值pnew

第三次迭代sqr3, qud3 ,pnew2 = qud(2,pnew1),依此类推。

现在我想修改我的代码,以便在给出迭代次数时使用for循环存储值。但是我的代码没有用。

我的代码如下,

i=4
sqr = np.zeros(i)
qud = np.zeros(i)
p1 = np.zeros(i)
sqr[0],qud[0],p1[0] = qud(2,p1)

for j in range (1,3) :
    sqr[j],qud[j],p1[j] = qud(2,p1[j-1])

任何人都可以提出任何建议以使其可行吗?

谢谢

1 个答案:

答案 0 :(得分:3)

执行此操作的pythonic方法是创建一个生成器。生成器将保持状态,您可以调用int或使用许多python itertools,映射,过滤器等中的任何一种。这是获取前四个值的一种方法:

next()

只要您不断对其进行迭代,这将保持价值。