gpt4 book ai didi

Python:舍入到列表中的下一个预定义整数

转载 作者:太空狗 更新时间:2023-10-30 00:20:57 25 4
gpt4 key购买 nike

我有一个预定义整数的 Python 列表:

intvals = [5000, 7500, 10000, 20000, 30000, 40000, 50000]

我需要上下舍入到列表中的下一个较低/较高的值。因此,例如,给定数字 8000,结果应为 [7500, 10000]。对于 42000,它应该是 [40000, 50000]。我想知道是否有一种简单的方法可以做到这一点。

我的想法是创建一个具有两个循环的函数 - 一个将值减 -1 直到它在列表中找到一个值,另一个将值增加 1 直到它找到更高的匹配。这可行,但也许有更好的解决方案?

最佳答案

这非常适合 bisect.bisect_right() 和 bisect.bisect_left()。

下面是一些示例代码,您可以对其进行扩展:

import bisect

def get_interval(x):
intvals = [5000, 7500, 10000, 20000, 30000, 40000, 50000]
i = bisect.bisect_right(intvals,x)
return intvals[i-1:i+1]

print get_interval(5500)

"""
>>>
[5000, 7500]
"""

这种技术速度很快,因为它使用二进制搜索(所以 logN 而不是 N 查找)

关于Python:舍入到列表中的下一个预定义整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9869066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com