gpt4 book ai didi

python - 关于在python中迭代函数的问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:31 26 4
gpt4 key购买 nike

我用 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])

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

谢谢

最佳答案

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

from itertools import islice

def qud(x,p):
x_sqr = x**2
x_qud = x**3
while True:
p = x_sqr*p # update p
yield x_sqr ,x_qud,p # yield instead of return

my_iterator = qud(2,1/2) # create an iterator based on itial values

for values in islice(my_iterator, 0, 4): # loop over an islice
print(values)

只要您不断迭代它,它就会不断产生值(value)。

关于python - 关于在python中迭代函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57085755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com