我发现自己写了很多明确的陈述,如下所示:
...inside a larger loop over i:
if i == 0:
y = ... # some value specifically for i = 0
x[i] = func(y, z)
elif i == iMax:
y = ... # some value specifically for i = iMax
x[i] = func(y, z)
else:
x[i] = func(y, z)
#'z' some other input that does not depend on i to generalize the example
除了编写另一个函数的简单答案之外,似乎应该有更抽象或pythonic的方式来实现这个构造:
def new_func(i, y, z):
#--- get y based on i
x = func(y, z)
return x
虽然这可能是一个风格问题,但我一直在看这个范例与不同的' func',所以我想有装饰器或包装器解决方案来简化这个接受各种功能' func&# 39;但是我还没有完成任务并认为社区反馈会有所帮助 - 想法?
澄清/扩展: 以下解决方案只解决了简单的案例:
if i == 0:
y = 0 #...some value
elif i == iMax:
y = 1 #... some other value
else:
y = 0.5 #... some non-limiting value
x = func(y, z)
我正在研究下一级抽象。下面是一个简单的示例,您将在1d数组中进行插值以获得值' z'用于评估另一个函数' func2'生产' y'然后计算一个新的' x'通过原始功能' func'
if i == 0:
y = func2(z[i])
elif i == iMax:
y = func2(z[i-1])
else:
y = func2(0.5*(z[i-1] + z[i])
x = func(y)
提出问题的另一种方法是"什么是嵌套函数的首选方法,以便外部函数返回一个中间值' y'基于循环索引' i'然后由内部函数' func'"?
进行评估