关于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中的异常处理简明介绍
Apr 13 Python
浅谈python为什么不需要三目运算符和switch
Jun 17 Python
python编程实现希尔排序
Apr 13 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
python中的文件打开与关闭操作命令介绍
Apr 26 Python
Windows下python3.6.4安装教程
Jul 31 Python
Linux CentOS Python开发环境搭建教程
Nov 28 Python
Django 使用easy_thumbnails压缩上传的图片方法
Jul 26 Python
Python爬虫 urllib2的使用方法详解
Sep 23 Python
Python遍历字典方式就实例详解
Dec 28 Python
python 字符串的驻留机制及优缺点
Jun 19 Python
Python可视化神器pyecharts绘制水球图
Jul 07 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
详解ThinkPHP3.2.3验证码显示、刷新、校验
2016/12/29 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
PHP常用正则表达式精选(推荐)
2019/05/28 PHP
laravel 去掉index.php伪静态的操作方法
2019/10/12 PHP
用js自动判断浏览器分辨率的代码
2007/01/28 Javascript
js最简单的拖拽效果实现代码
2010/09/24 Javascript
js获取php变量的实现代码
2013/08/10 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
JavaScript利用正则表达式替换字符串中的内容
2016/12/12 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
JSONObject与JSONArray使用方法解析
2020/09/28 Javascript
python实现哈希表
2014/02/07 Python
python实现的登录和操作开心网脚本分享
2014/07/09 Python
python字符串,数值计算
2016/10/05 Python
Python中生成Epoch的方法
2017/04/26 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
pygame游戏之旅 添加游戏界面按键图形
2018/11/20 Python
django2.0扩展用户字段示例
2019/02/13 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
windows 10 设定计划任务自动执行 python 脚本的方法
2019/09/11 Python
Pytorch通过保存为ONNX模型转TensorRT5的实现
2020/05/25 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
Python钉钉报警及Zabbix集成钉钉报警的示例代码
2020/08/17 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
德国婴儿推车和儿童安全座椅商店:BABYSHOP
2016/09/01 全球购物
美国电力供应商店/电气批发商:USESI
2018/10/12 全球购物
Crocs欧洲官网:Crocs Europe
2020/01/14 全球购物
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
解除劳动合同协议书范本
2014/04/14 职场文书
赔偿协议书范本
2014/04/15 职场文书
社会实践单位意见
2015/06/05 职场文书
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android