首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一定范围内对列表进行四舍五入

在一定范围内对列表进行四舍五入
EN

Stack Overflow用户
提问于 2021-04-29 19:23:16
回答 1查看 24关注 0票数 1

我有一个数字列表,我希望以某种方式将其转换为单元步进形式。

这就是我的界限

代码语言:javascript
复制
[367.3090551181102, 371.73179133858264, 376.1545275590551, 380.5772637795276, 385.0]

这是我的数据

代码语言:javascript
复制
[367.3090551181102, 370, 370, 370, 370, 370, 370, 370, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 369, 368, 369, 368, 368, 368, 368, 368, 368, 368, 368, 369, 370, 367.3090551181102, 367.3090551181102, 367.3090551181102, 370, 368, 373, 369, 371, 368, 367.3090551181102, 367.3090551181102, 367.3090551181102, 369, 367.3090551181102, 372, 367.3090551181102, 368, 368, ...]

我想要做的是,基本上把数据中的每一个数字加起来,直到边界。数字介于下边界和上边界之间。

假设号码是370,我想把这个算到371.73.既然是367.309.还有371.73..。或者是381,那么我想把它整到370.57.

这是我的代码,但我有点困惑

代码语言:javascript
复制
def unit_step(data,boundaries):
    us = []
    for d in data:
        if(boundaries[0] < d < boundaries[1]):
            us.append(rounder(boundaries[0],boundaries[1],d))
        elif(boundaries[1] < d < boundaries[2]):
            us.append(rounder(boundaries[1],boundaries[2],d))
        elif(boundaries[2] < d < boundaries[3]):
            us.append(rounder(boundaries[2],boundaries[3],d))
        elif(boundaries[3] < d < boundaries[4]):
            us.append(rounder(boundaries[3],boundaries[4],d))
    return us

我试着在另一个循环中寻找循环,但没能成功。

我错在哪里,或者与双for循环相比,它是一种有用的方法?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-29 19:27:43

您可以在min中使用列表理解来检查来自boundaries的最近(高值或低值)值,并相应地替换来自data的值。

代码语言:javascript
复制
>>> [min(boundaries, key=lambda i: abs(i - value)) for value in data]
[367.3090551181102, 371.73179133858264, 371.73179133858264, 371.73179133858264, 371.73179133858264, 371.73179133858264, 371.73179133858264, 371.73179133858264, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 371.73179133858264, 367.3090551181102, 367.3090551181102, 367.3090551181102, 371.73179133858264, 367.3090551181102, 371.73179133858264, 367.3090551181102, 371.73179133858264, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 367.3090551181102, 371.73179133858264, 367.3090551181102, 367.3090551181102, 367.3090551181102]
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67323852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档