首页 文章

使用相同的符号生成许多SymPy表达式

提问于
浏览
2

我想使用相同的符号集创建许多(超过400个)SymPy表达式 . 表达式如下所示:

z_1_8 = k1 + k2 + kuni + k4 + k7
z_2_9_0 = k2 + k8 + k1 + k6
z_3_1_10 = k3 + kbi + k2 + k7

名称'z_1_8'将从列表生成,其中列表的每个成员都包含命名每个表达式的数字 . 同样,这些符号也来自一个列表,其中每个成员包含一个符号列表作为字符串 - 'k1''k2' 等 - 为每个要生成的表达式 .

list_to_generate_expression_names = [[1, 8], [2, 9, 0], [3, 1, 10],...]
list_to_generate_expressions = [['k1', 'k2','kuni','k4','k7'], ['k2', 'k8', 'k1', 'k6'], ['k3', 'kbi', 'k2', 'k7']]

有什么办法可以做到这一点?

1 回答

  • 1

    我在这里假设 list_to_generate_expressions 中的每个字符串都是已存在的对象的名称 . 如果是这种情况,并且您的列表正确匹配,则可以执行以下操作:

    names = ['z_' + '_'.join([str(n) for n in name_nums]) for name_nums in list_to_generate_expression_names]
    exprs = ['+'.join(expr_items) for expr_items in list_to_generate_expressions]
    
    for name, expr in zip(names,exprs):
        exec('{0} = {1}'.format(name,expr))
    

    请注意,这确实使用了 exec ,应该谨慎使用 exec ,但是因为你非常安全 .

相关问题