为了账号安全,请及时绑定邮箱和手机立即绑定

查找给定数字在分区中的位置

查找给定数字在分区中的位置

红糖糍粑 2022-01-05 13:10:24
假设我有一个排序的整数数组说partition = [0, 3, 7, 12, 18, 23, 27]然后给出一个值value = 9我想返回我的价值所在的间隔。例如bounds = function(partition, value)print(bounds)>>>[7,12]是否有一个功能可以帮助我,还是我必须从头开始构建它?
查看完整描述

3 回答

?
撒科打诨

TA贡献1934条经验 获得超2个赞

试试numpy.searchsorted()。来自纪录片:


查找应插入元素以保持顺序的索引。


import numpy as np

partition = np.array( [0, 3, 7, 12, 18, 23, 27] )

value = 9

idx = np.searchsorted(partition,value)

bound = (partition[idx-1],partition[idx])

print(bound)

>>>>(7,12)

的优点searchsorted是它可以一次为您提供多个值的索引。


查看完整回答
反对 回复 2022-01-05
?
慕侠2389804

TA贡献1719条经验 获得超6个赞

该对开模块是有效的这样做很好。它将返回上限的索引。


如果该值可能超出范围,您需要进行一些错误检查:


from bisect import bisect

partition = [0, 3, 7, 12, 18, 23, 27]

value = 9

top = bisect(partition, value)


print(partition[top-1], partition[top])

# 7 12


查看完整回答
反对 回复 2022-01-05
?
偶然的你

TA贡献1841条经验 获得超3个赞

 def function(partition,value):

  for i in range(len(partition)):

  if partition[i]<value and partition[i+1]>value:

    print [partition[i],partition[i+1]]

 partition = [0, 3, 7, 12, 18, 23, 27,5,10]

 value=9

 function(partition,value)


查看完整回答
反对 回复 2022-01-05
  • 3 回答
  • 0 关注
  • 149 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信