Python 中的列表加权总和未达到预期值
Weighting a list in Python does not sum to the intended value
我想采用 List3
的元素来描述一年中每个月可用的生产天数,并将其与 List1
中的年产量一起加权以完成每月生产量。我的代码是:
List3 = [31,28,31,30,31,30,31,31,19,31,30,31]
List = [5150]
for i in xrange(len(List3)):
j = List3[i]
g = g+j
for i in xrange(len(List)):
a = List[i]/g
for j in xrange(len(List3)):
print (a*List3[j])
其中 a
描述了每天 的产量 ,因此将其乘以每个月的 List3[j]
的元素应该提供总数月产量。
但是,运行这个程序的月产量是:
434 392 434 420 434 420 434 434 266 434 420 434
总和为 4956。但 List3
的年产量为 5150 台。因此,年产量与月产量总和之间存在 154 个单位的差异。
有人能看出我哪里做错了吗?我记得我之前重写过这段代码,使月产量的总和最多与年产量相差大约10个单位,这就足够了。但是我不记得我是怎么做的。
此致,
这是四舍五入造成的。在Python2中,这一行是整数除法:
a = List[i]/g
下面是一个简单的实验性工作流程,使用交互式解释器来说明这个问题:
>>> l3 = [31,28,31,30,31,30,31,31,19,31,30,31]
>>> l = [5150]
>>> g = sum(l3)
>>> g
354
>>> a = l[0] / g
>>> a
14
>>> sum(a*e for e in l3)
4956
>>> a = l[0] / float(g)
>>> a
14.548022598870057
>>> sum(a*e for e in l3)
5149.999999999999
我想采用 List3
的元素来描述一年中每个月可用的生产天数,并将其与 List1
中的年产量一起加权以完成每月生产量。我的代码是:
List3 = [31,28,31,30,31,30,31,31,19,31,30,31]
List = [5150]
for i in xrange(len(List3)):
j = List3[i]
g = g+j
for i in xrange(len(List)):
a = List[i]/g
for j in xrange(len(List3)):
print (a*List3[j])
其中 a
描述了每天 的产量 ,因此将其乘以每个月的 List3[j]
的元素应该提供总数月产量。
但是,运行这个程序的月产量是:
434 392 434 420 434 420 434 434 266 434 420 434
总和为 4956。但 List3
的年产量为 5150 台。因此,年产量与月产量总和之间存在 154 个单位的差异。
有人能看出我哪里做错了吗?我记得我之前重写过这段代码,使月产量的总和最多与年产量相差大约10个单位,这就足够了。但是我不记得我是怎么做的。
此致,
这是四舍五入造成的。在Python2中,这一行是整数除法:
a = List[i]/g
下面是一个简单的实验性工作流程,使用交互式解释器来说明这个问题:
>>> l3 = [31,28,31,30,31,30,31,31,19,31,30,31]
>>> l = [5150]
>>> g = sum(l3)
>>> g
354
>>> a = l[0] / g
>>> a
14
>>> sum(a*e for e in l3)
4956
>>> a = l[0] / float(g)
>>> a
14.548022598870057
>>> sum(a*e for e in l3)
5149.999999999999