对于范围的每个边界,您可以使用

binary-search两次(使用

bisect.bisect_left()).

如果返回的索引相同,则没有交集(返回None).

如果不是,则返回start_index处的元素(其中start_index是您的范围开始时获得的索引).

这是代码:

import bisect

def intersect_range(lst, start, stop):

start_i = bisect.bisect_left(lst, start)

stop_i = bisect.bisect_left(lst, stop)

if start_i == stop_i:

return None

else:

return lst[start_i]

intersect_range([1,2,3,7,8,10,15], 5, 10)

=> 7

intersect_range([1,2,3,7,8,10,15], 5, 6)

=> None

intersect_range([1,2,3,7,8,10,15], 15,30)

=> 15

intersect_range([1,2,3,7,8,10,15], 0,1) # "stop" is excluded from range

=> None

由于您执行了两次二进制搜索,因此复杂度为O(logN),其中N是列表的长度.

编辑:

还有一个稍快的替代方案,即二进制搜索范围的开始,然后检查lst [start_index]是否在范围内(start< = lst [start_i]< stop).这将logN操作的数量从两个减少到一个.代码如下所示:

def intersect_range(lst, start, stop):

start_i = bisect.bisect_left(lst, start)

if start <= lst[start_i] < stop:

return lst[start_i]

else:

return None

python输入多个数字后续操作_有效地确定后续数字范围中的数字是否在有序列表中. (在Python中)...相关推荐

  1. python输入一个整数倒序输出_利用Python实现倒序任意整数

    这是很早以前学习C时候做过的一个练习题,题目的要求大概是把用户输入的三位数倒序输出,比如说用户输入123,然后程序应该输出的结果是321.如果遇到用户输入100,那么程序应该输出1.然后我给扩展一下, ...

  2. python输入水果求个数问题_水果爱好者:用Python解决一个简单的分类问题

    作者 | Ocktavia Nurima Putri 来源 | Medium 编辑 | 代码医生团队 在这篇文章中,将使用Scikit-learn在Python中实现几种机器学习算法.将使用一个简单的 ...

  3. python输入什么就输出什么_一文读懂Python的输入和输出

    本文介绍了Python的输入和输出,既然是Python代码,那么就一定有输出量,那么,Python是如何输出的呢? 输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'h ...

  4. 用python输入任意三条边长_如何用python求第三条边边长

    用Python实现"已知三角形两个直角边,求斜边" 要求:用户输入两个直角边(数值为浮点类型),若非浮点类型,则提示用户,继续输入. 思路:伪代码描述下步骤 1.-input a ...

  5. python输入多个坐标点_判断多个坐标是否在同一条直线上|Python练习系列[13]

    练习内容:判断多个坐标是否在同一条直线上 完整代码和注释如下 print('请输入几个点的横纵坐标,程序将会返回这几个点是否在同一条直线上') def coor_nums():#获得每个值的横纵坐标 ...

  6. python cnn代码详解图解_基于TensorFlow的CNN实现Mnist手写数字识别

    本文实例为大家分享了基于TensorFlow的CNN实现Mnist手写数字识别的具体代码,供大家参考,具体内容如下 一.CNN模型结构 输入层:Mnist数据集(28*28) 第一层卷积:感受视野5* ...

  7. python输入边数绘制正多边形_如何用Python,画一个正多边形,长度和颜色还是任意的!...

    Python画基本形状,要用到自带的turtle库,这是个简单绘图的入门小工具. 任务设定如上,下面来一点点拆解它. 从键盘获取用户输入的边数. 画笔形状由原来的三角形,改为海龟形状. 长度随机产生, ...

  8. python输入一个人的名字_怎样用c语言做到输入一个人的名字才会输出一个心?

    搞事开始. 首先,我们先进行如下声明 #include #include #include #include HDC offscreen; long double param; COLORREF C_ ...

  9. python输入三次密码程序_请教各位大神,为啥以下代码输入修改密码后连输错三次还是能输入...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #定义一个密码,列表属性,可以修改 password_list = ['reset', '12345'] #定义一个函数,设定输入次数 def user_ ...

最新文章

  1. word2vec模型评估_干货 | NLP中的十个预训练模型
  2. android 找不到符号 符号 RequiresApi
  3. Shell(3)——截取某些字符、默认值处理
  4. 关于字符串流的学习(c++)
  5. 了解cron以及使用cron定时备份MySQL
  6. 提高 Web 站点性能的最佳实践
  7. Java第一章java语言的概述
  8. python开发mes系统_MES系统开发
  9. linux ns机制,Linux内核API ns_to_timespec
  10. Maven知识- repositories
  11. js系列之每天一练成长录之一
  12. STM32程序的烧录方式 与 ISP一键下载
  13. 最经典的10部爱情小说
  14. 功率是电压电流乘积的波形在一个周期内积分后除以周期。
  15. 非常详细的STM32 CAN通信的贴子,从总线细节到编程实现
  16. java 斗地主出牌算法_斗地主智能(AI)出牌算法
  17. 服务器pfx文件如何导入,linux 导入pfx 证书
  18. 打造超级IP,你真悟错了道!
  19. 关于微信小程序webview的使用
  20. Cocos2d的ChipMunk

热门文章

  1. leetcode-160-相交链表(simple)
  2. 利用 jquery 获取某个元素下的所有图片并改变其属性
  3. 四种Java线程池用法解析
  4. eclipse或者myeclipse的代码提示功能
  5. Arduino学习笔记1---开发环境搭建
  6. js自己定义插件-选项卡
  7. Hibernate的一级缓存
  8. 【转】Winform输入法控制
  9. 【stanford C++】容器III——Vector类
  10. Ext结合DWR的关键代码(运行成功的DWRProxy)