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

时间:2014-05-03 20:48:07

标签: python sympy

我想使用相同的符号集创建许多(超过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 个答案:

答案 0 :(得分: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,这应该始终谨慎使用,但由于您使用自己的列表,因此非常安全。