python编写递归函数m(i)计算以下级数_如何在python中为所有可能的参数组合编写递归函数...

您可以使用itertools.product函数,该函数获取迭代器列表并创建其笛卡尔积的迭代器(请参见documentation)。在

在我的解决方案中,我使用parameter字典中的值作为迭代器。我检查每个键的选项的乘积(for values_option in product(*parameter.values())),并用原始键创建一个新字典)from itertools import product

import numpy as np

parameter={'alpha1':np.linspace(0.3,0.4,10),'alpha2':np.linspace(0.9,2,100)}

def parameter_options(parameter):

for values_option in product(*parameter.values()):

yield dict(zip(parameter.keys(), values_option))

for opt in parameter_options(parameter):

print opt

让我们一块一块地回顾一下:

parameter.values()

这将给出字典中每个键值的值列表。在

例如,如果我们有dictionary = {a: (1, 2, 3), b: (4, 5, 6)},那么使用dictionary.values()将返回[(1, 2, 3), (4, 5, 6)]。做dictionary.keys()将得到{}。在

注意:Python2和Python3之间有区别-在Python2中,这些方法(keys()和{})将返回普通列表,而在Python3中,它们返回一个特殊的迭代器。这不应该改变解决方案。在

product(*parameter.values())

我们用星号来“解包”列表。简单地说,itertools.product接收任意数量的参数。我们希望使用所有values作为输入:

^{pr2}$

Python有一种简单的方法将列表作为输入传递给接收任意数量参数的函数。最后一行与product(*vals)相同。在

for values_option in product(*parameter.values()):

我们检查了parameter字典值的所有选项。在

第一次迭代将为所有参数提供第一个选项。第二次迭代将为除一个参数之外的所有参数提供第一个选项,该参数将具有第二个选项。这一直持续到最后一个选项,每个参数都有最后一个选项。在

zip(parameter.keys(), values_option)

这需要两个列表(键和可能的值)并将它们基本上进行转换。它给出了一个包含对的相同长度的列表:第一个列表中的第一个元素和第二个列表中的第二个元素。是这样的:keys = ['a', 'b', 'c', 'd']

vals = [1, 2, 3, 4]

zip(keys, vals) = [('a', 1), ('b', 2), ('c', 3), ('d', 4)]

dict(...)

现在我们可以使用这个压缩列表来创建字典。这是启动dict的另一种方法{'a': 1, 'b': 2, 'c': 3} == dict([('a', 1), ('b', 2), ('c', 3)])

yield ...

这是我们在python中用来创建迭代器的。这是一个复杂的主题,但是您可以在for循环这行之前编写options = []

而不是yield dict(...)写options.append(dict(...))。

在函数return options的末尾。在

你好。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值