繁体   English   中英

使用 itertools.accumulate 函数时舍入列表中的值

[英]Rounding values in list when using itertools.accumulate function

我有一个四舍五入到十分之一的数字列表:

myList =
[2.3,
 14.4,
 21.6,
 6.0,
 2.6,
 4.2,
 7.6,
 46.7,
 8.1,
 1.2,
 7.6,
 6.2,
 8.3,
 17.7,
 27.3,
 5.4,
 18.6,
 6.4,
 6.4,
 40.4,
 28.4,
 36.0,
 21.5,
 4.7,
 19.6,
 22.0,
 18.2,
 19.9,
 12.1,
 20.7,
 1.0,
 11.8,
 1.1,
 3.2,
 8.0,
 6.5,
 4.3,
 6.4,
 4.3,
 16.7,
 17.8,
 2.7,
 7.5,
 1.5,
 2.5,
 7.8,
 4.4,
 10.2,
 14.8,
 25.1]

当我将此列表输入itertools.accumulate函数并生成一个新列表(即运行总数)时,由于浮点运算,某些值有几个小数位。

from itertools import accumulate

accumulated_list = list(accumulate(myList))
accumulated_list

输出到:

[2.3,
 16.7,
 38.3,
 44.3,
 46.9,
 51.1,
 58.7,
 105.4,
 113.5,
 114.7,
 122.3,
 128.5,
 136.8,
 154.5,
 181.8,
 187.20000000000002,
 205.8,
 212.20000000000002,
 218.60000000000002,
 259.0,
 287.4,
 323.4,
 344.9,
 349.59999999999997,
 369.2,
 391.2,
 409.4,
 429.29999999999995,
 441.4,
 462.09999999999997,
 463.09999999999997,
 474.9,
 476.0,
 479.2,
 487.2,
 493.7,
 498.0,
 504.4,
 508.7,
 525.4,
 543.1999999999999,
 545.9,
 553.4,
 554.9,
 557.4,
 565.1999999999999,
 569.5999999999999,
 579.8,
 594.5999999999999,
 619.6999999999999]

我参考了一些主要的帖子和教程,但无法修复我的accumulated_list
将浮点数限制为两位小数
https://docs.python.org/3/tutorial/floatingpoint.html

如何将这些解析为再次四舍五入到十分之一的数字? (不是格式化打印,而是四舍五入值。)

我试过使用
list(numpy.round(accumulate(myList),1))或使用decimal模块将数字设置为decimal但无济于事。
list(accumulate(myList.quantize(Decimal('0.1'))))

添加有关将元素实现为十进制的更多信息。 上面的myList是从一个函数生成的。 如何将元素实现为decimal

import numpy as np

def simulate(mean, size):
    return list(np.round(np.random.exponential(mean, size), 1))

myList = simulate(15, 50)

你可以这样做:

import numpy as np
accumulated_list = np.around(np.cumsum(myList), decimals=1)

谢谢

您可以简单地将它们round到一位小数:

accumulated_list = list(map(lambda x: round(x, 1), accumulate(myList)))

您可以使用round函数对结果进行round 使用maplambda功能,通过产生每一个项目做accumulate

accumulated = map(lambda x: round(x, 1), accumulate(myList))
print(list(accumulated))

# outputs the following list
[2.3, 16.7, 38.3, 44.3, 46.9, 51.1, 58.7, 105.4, 113.5, 114.7, 122.3, 128.5, 136.8, 154.5, 181.8, 187.2, 205.8, 212.2, 218.6, 259.0, 287.4, 323.4, 344.9, 349.6, 369.2, 391.2, 409.4, 429.3, 441.4, 462.1, 463.1, 474.9, 476.0, 479.2, 487.2, 493.7, 498.0, 504.4, 508.7, 525.4, 543.2, 545.9, 553.4, 554.9, 557.4, 565.2, 569.6, 579.8, 594.6, 619.7]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM