关于python类SortedList详解


Posted in Python onSeptember 04, 2021

SortedList 有序序列

class sortedcontainers.SortedList(iterable=None, key=None)

方法

1.添加值

  • SortedList.add(value) 添加新元素,并排序。时间复杂度O(log(n)).
  • SortedList.update(iterable) 对添加的可迭代的所有元素排序。时间复杂度O(k*log(n)).

2.移除值

  • SortedList.clear() 移除所有元素。时间复杂度O(n).
  • SortedList.discard(value) 移除一个值元素,如果元素不存在,不报错。时间复杂度O(log(n)).
  • SortedList.remove(value) 移除一个值元素,如果元素不存在,报错ValueError。时间复杂度O(log(n)).
  • SortedList.pop(index=-1) 移除一个指定下标元素,如果有序序列为空或者下标超限,报错IndexError. 时间复杂度O(log(n

3.查找

  • SortedList.bisect_left(value) 查找元素可以插入的位置下标,如果这个value已经存在,则插入已经存在的所有values之前(左侧).时间复杂度O(log(n)).
s = SortedList([1,2,3,9,8,6,5,5,5,5,5])
s.bisect_left(5)
Out[5]: 3
s
Out[6]: SortedList([1, 2, 3, 5, 5, 5, 5, 5, 6, 8, 9])
  • SortedList.bisect_right(value) 查找元素可以插入的位置下标,如果这个value已经存在,则插入已经存在的所有values之后(右侧)。时间复杂度O(log(n)).
s.bisect_right(5)
Out[7]: 8
s
Out[8]: SortedList([1, 2, 3, 5, 5, 5, 5, 5, 6, 8, 9])
  • SortedList.count(value) 查找元素出现的次数。时间复杂度O(log(n)).
s.count(5)
Out[9]: 5
  • SortedList.index(value, start=None, Stop=None) 查找索引范围[start,stop)内第一次出现value的索引,如果value不存在,报错ValueError. 时间复杂度O(log(n)).

4.迭代值

  • SortedList.irange(minimun=None, maximum=None, inclusive=True, True, reverse=False) 返回value=[minimun,maximum]之间的可迭代值,inclusive = Ture, True 第一个True表示包括索引minimun, 第二个Ture表示包括索引maximum,reverse是表示返回的可迭代值是否反转。
  • SortedList.islice(start=None, stop=None, reverse=False) 返回index=[start, stop)之间的可迭代值(切片)。

5. 其他

  • SortedList.copy() 返回一个浅拷贝有序序列。时间复杂度O(n)。

浅拷贝(1)直接赋值,默认浅拷贝传递对象的引用而已,原始列表改变,被赋值的列表也会做相同的改变。

a = [1,2,3]
b=a
b
Out[60]: [1, 2, 3]
a[0]=0
a
Out[62]: [0, 2, 3]
b
Out[63]: [0, 2, 3]

浅拷贝(2)copy函数,浅拷贝传递对象的引用,原始数据改变,只有子对象会改变。

a = [[1],2,3]
b = a.copy()
a
Out[85]: [[1], 2, 3]
b
Out[86]: [[1], 2, 3]
# 对象不改变
a.append(4)
a
Out[88]: [[1], 2, 3, 4]
b
Out[89]: [[1], 2, 3]
# 子对象跟着改变
a[0].append(2)
a
Out[91]: [[1, 2], 2, 3, 4]
b
Out[92]: [[1, 2], 2, 3]

关于python类SortedList详解

以上就是关于python类SortedList详解的详细内容,更多关于python类SortedList详解的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python multiprocessing.Manager介绍和实例(进程间共享数据)
Nov 21 Python
对python使用http、https代理的实例讲解
May 07 Python
python批量赋值操作实例
Oct 22 Python
python整合ffmpeg实现视频文件的批量转换
May 31 Python
程序员的七夕用30行代码让Python化身表白神器
Aug 07 Python
python实现简易学生信息管理系统
Apr 05 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
Feb 10 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
Feb 21 Python
利用PyTorch实现VGG16教程
Jun 24 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
Django如何与Ajax交互
Apr 29 Python
python如何查找列表中元素的位置
May 30 Python
Python3.8官网文档之类的基础语法阅读
Sep 04 #Python
python实现Nao机器人的单目测距
Sep 04 #Python
python读取mnist数据集方法案例详解
Sep 04 #Python
Pyqt5将多个类组合在一个界面显示的完整示例
Sep 04 #Python
一小时学会TensorFlow2之基本操作2实例代码
Python torch.flatten()函数案例详解
Aug 30 #Python
Python之基础函数案例详解
Aug 30 #Python
You might like
php session劫持和防范的方法
2013/11/12 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
thinkphp文件处理类Dir.class.php的用法分析
2014/12/08 PHP
PHP生成图像验证码的方法小结(2种方法)
2016/07/18 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
深入理解JavaScript 闭包究竟是什么
2013/04/12 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
jquery实现表格本地排序的方法
2015/03/11 Javascript
jQuery制作效果超棒的手风琴折叠菜单
2015/04/03 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
AngularJS路由切换实现方法分析
2017/03/17 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python3中常用的处理时间和实现定时任务的方法的介绍
2015/04/07 Python
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
Django框架实现逆向解析url的方法
2018/07/04 Python
pytorch 数据集图片显示方法
2018/07/26 Python
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
python误差棒图errorbar()函数实例解析
2020/02/11 Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
2020/06/02 Python
使用CSS3配合IE滤镜实现渐变和投影的效果
2015/09/06 HTML / CSS
意大利值得信赖的在线超级药房:PillolaStore
2020/02/05 全球购物
详解python中[-1]、[:-1]、[::-1]、[n::-1]使用方法
2021/04/25 Python