我尝试在 :
分隔之间添加逗号分隔值,然后乘以整个值
例如,假设我的值为 1,2,3:4,5,6
我想添加 1+2+3 和 4+5+6,然后乘以该值的结果,所以答案是 6 * 15 = 90
对于我的以下数据,我希望结果是 7.224
但此脚本给出 61.658886435
我不知道我的脚本有什么问题'
ar = "0.212,1.231,0.112:1.001,3.212,0.002:0.002,0.0001,1.1"
x_data = ar.split(":")
x_final = 1
x_add = 0
for i in x_data:
x_each = i.split(",")
for j in x_each:
x_add = x_add + float(j)
x_final = x_add * x_final
print x_final
是否有任何可能的方法可以在不迭代循环的情况下获得结果?针对上述问题
最佳答案
这个问题也可以通过函数式的方式解决:
您必须将列表中的所有值相乘 - 这就是
functools.reduce
+operator.mul
的作用您必须对所有内部列表中的所有值求和 - 这就是
sum
的用途
示例:
In [5]: ar = "0.212,1.231,0.112:1.001,3.212,0.002:0.002,0.0001,1.1"
In [6]: import operator
In [7]: import functools
In [8]: functools.reduce(operator.mul, (sum(float(x) for x in s.split(',')) for s in ar.split(':')))
Out[8]: 7.223521582500001
关于python - 每个给出不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34522713/