这是我目前拥有的并且运行良好:
def iterate(seed, num):
x = seed
orbit = [x]
for i in range(num):
x = 2 * x * (1 - x)
orbit.append(x)
return orbit
现在,如果我想将第 5 行的迭代方程更改为 x = x ** 2 - 3,我必须使用除第 5 行之外的所有相同代码创建一个新函数。如何创建一个更通用的函数可以有一个函数作为参数的函数吗?
功能有一等公民在Python中。您可以传递函数作为参数:
def iterate(seed, num, fct):
# ^^^
x = seed
orbit = [x]
for i in range(num):
x = fct(x)
# ^^^
orbit.append(x)
return orbit
在您的代码中,您将传递所需的函数作为第三个参数:
def f(x):
return 2*x*(1-x)
iterate(seed, num, f)
# ^
Or
def g(x):
return 3*x*(2-x)
iterate(seed, num, g)
# ^
Or ...
如果您不想每次都命名新函数,则可以选择传递匿名函数(即:lambda) 反而:
iterate(seed, num, lambda x: 3*x*(4-x))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)