Python 中的迭代参数



我正在构建一个函数,该函数接收"块"数据并迭代处理它们。 我的问题是如何保存下一次运行的最后一个参数,同时仍然在第一次运行中初始化它。

例:

def IterativeFunction(X):      #X is the received vector (chunk of data)
for i in range(len(X)):
Y[i] = 0.1 * X[i] + 0.9 * Xn1
Xn1 = X[i]                     #This is the iterative part
return(Y)

main 函数将接收"Y",然后发送下一个"块"。 所以我需要迭代函数再次运行,并将"Xn"初始化为:"Xn1 = X[i](上次运行("。 我仍然需要在第一次运行时将 Xn1 初始化为"Xn1 = 0"。

建议的解决方案:
我当然可以返回"Xn1"并从"main"再次接收它,但我相信有更好的方法来实现这一点。

您可以将Xn1传递给函数,并在每次调用函数时将Xn1Y一起返回。在第一次中,它将丢失或None(或您选择的任何其他默认值(,然后对其进行初始化。

P.S 请注意,Y从未初始化,因此在原始代码中Xn1

素描-

def IterativeFunction(X, Xn1=None):
if Xn1 is None:
Xn1 = initialize
for i in range(len(X)):
Y[i] = 0.1 * X[i] + 0.9 * Xn1
Xn1 = X[i]
return(Y, Xn1)

您可以使用变量来跟踪运行函数的次数,因此第一次运行可以运行一段代码,其余部分可以运行另一段代码,如下所示:

run_times = 0
def IterativeFunction(X):      #X is the received vector (chunk of data)
run_times += 1
if run_times == 1:
for i in range(len(X)):
Y[i] = 0.1 * X[i] + 0.9 * Xn1
Xn1 = X[i]                     #This is the iterative part
else:
blablah

return(Y)

不确定您希望它以哪种方式工作,但您明白了

感谢您的上述回答。我把你的想法组合成这样:

def Main_function():
#init
Xn1 = 0

#Code part
...code code code...
call IterativeFunction( VectorX , Xn1)
end 
def IterativeFunction( VectorX , Xn1):

for i in range(len(X)):
Y[i] = 0.1 * X[i] + 0.9 * Xn1
Xn1 = X[i]                    
return (Y , Xn1)

我的问题是关于实现此目的的其他方法,例如全局参数? 或者这是实现解决方案的最推荐方法?

最新更新