Python中用于算术操作的静态列表

时间:2013-11-12 14:30:03

标签: python list math

我有一个类似于

的列表
a = ['12*b+20*c+30*d']

我继续使用python中的b,c,d函数替换值replace 通过使用这样的东西

mapping = [ ('b', `float(3)`), ('c', `float(2)`), ('d', `float(1)`)]
for k, v in mapping:
    a[0] = a[0].replace(k, v)

然后对它执行一些算术运算。

我希望有一个static list,保留列表a,而不是将其更改为

a = ['12*3+20*2+30*1']

1 个答案:

答案 0 :(得分:3)

为什么不直接格式化字符串?

l = '12*%d+20*%d+30*%d'%(b, c, d)

实际上,问题是,为什么你甚至把方程式放在一个字符串中?你打算用eval吗?

你可以把它放在一个函数中:

def calculate(constants, *args):
    num = 0

    for c, v in zip(constants, *args):
        num +=  c*v
    return num

演示:

>>> def calculate(constants, *args):
        num = 0
        for c, v in zip(constants, args):
            num +=  c*v
        return num

>>> calculate([12, 20, 30], b, c, d)
204

等于:

>>> 12 * b + 20 * c + 30 * d
204

甚至,如果常数总是相同的:

def calculate(b, c, d):
    return 12 * b + 20 * c + 30 * d