gpt4 book ai didi

python - 给定一个 float ,查找是否在列表中或与其最接近的数字

转载 作者:行者123 更新时间:2023-12-01 05:16:03 25 4
gpt4 key购买 nike

我有一个元组列表,即具有 x 和 y 值的 2 维元组。称之为数据。我想采用两个 float xmin 和 xmax,并返回该间隔上最大 y 值的索引。即使 xmin 和 xmax 与数据点不完全匹配,它也应该可以工作。

我知道如何解决这个问题,除了将 xmin 和 xmax 舍入到列表中最接近的值的方法之外。我不知道,因为我是 python 新手。

# Find the index of the point (x, y) with the maximum y value
# on the interval [xmin, xmax]
def find_peak(data, xmin, xmax):

我可以暂时搜索列表并记录每个 x 值的最小差异。这可行还是有更聪明的方法?

最佳答案

给定二维坐标列表。

  1. 根据 x 坐标对数据进行排序。这应该是自然列表排序。
  2. 使用Python bisect模块确定数据点的开始和结束索引
  3. 使用键为 operator.itemgetter(1) 的内置 min 来查找 x_main 和 x_max 中 y 值最大的元素

示例实现

def foo(data, x_min, x_max):
from bisect import bisect_left, bisect
from operator import itemgetter
data = sorted(data)
x_data = [x for x,y in data]
index_min = bisect_left(x_data, x_min)
index_max = bisect(x_data, x_max)
return max(data[index_min:index_max],key=itemgetter(1))[-1]

示例运行

>>> data = [(random.randint(1,20),random.randint(1,20)) for _ in range(10)]
>>> data
[(9, 9), (11, 11), (7, 7), (16, 11), (15, 19), (8, 18), (16, 3), (18, 7), (17, 13), (3, 11)]
>>> foo(data,3,7)
11

关于python - 给定一个 float ,查找是否在列表中或与其最接近的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23211369/

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