gpt4 book ai didi

python - 如何有效地确定给定值所在的区间?

转载 作者:太空宇宙 更新时间:2023-11-03 13:58:52 25 4
gpt4 key购买 nike

考虑以下区域定义的值 x:

  • 'A' : x < 1
  • 'B' : 1 <= x < 10
  • 'C' : 10 <= x < 112
  • 'D' : 112 <= x

我正在寻找一种有效的方法来确定给定 x 值的区域。我想到了:

borders = (1, 10, 112)

tst_values = (.2, 2, 22, 222)
for x in tst_values:
z = next((i for b, i in zip(borders, 'ABC') if x < b), 'D')
print(f" * Value {x:3g} is in zone '{z}'.")

# The output is:
# * Value 0.2 is in zone 'A'.
# * Value 2 is in zone 'B'.
# * Value 22 is in zone 'C'.
# * Value 222 is in zone 'D'.

解决此类问题的最佳实践是什么,尤其是当区域数量很大时,即 len(borders)borders 可能包含(增加的) float 的任意列表。

更新稍微改写问题以解决评论。

最佳答案

执行此操作的一种有效方法是通过边界进行二进制搜索。 Python 内置了一个 bisect 库,可以为您执行此操作:

import bisect

borders = (1, 10, 112)
tst_values = (.2, 2, 22, 222)
for x in tst_values:
border_right = bisect.bisect_right(borders, x) # x < b
# or
border_left = bisect.bisect_left(borders, x) # x > b

这将为您提供值 x 落入的边界的索引。然后,您可以根据需要将该索引转换为字母。

关于python - 如何有效地确定给定值所在的区间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51788422/

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