关于python类SortedList详解

 更新时间:2021年09月04日 09:43:19   作者:阿荣Jura  
这篇文章主要介绍了关于python类SortedList详解,可以帮大家巩固一下python类的基础知识,有需要的朋友可以借鉴参考下,希望可以对广大读者有所帮助

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详解的资料请关注脚本之家其它相关文章!

相关文章

  • TensorBoard 计算图的可视化实现

    TensorBoard 计算图的可视化实现

    今天小编就为大家分享一篇TensorBoard 计算图的可视化实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • 基于python的Tkinter编写登陆注册界面

    基于python的Tkinter编写登陆注册界面

    这篇文章主要为大家详细介绍了基于python的Tkinter编写登陆注册界面,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Python中AI图像识别实现身份证识别

    Python中AI图像识别实现身份证识别

    图像识别说白了就是把一张照片上面的文字进行提取,提供工作效率,本文主要介绍了Python 身份证识别,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Python实现自定义包的实例详解

    Python实现自定义包的实例详解

    这篇文章主要介绍了实现自定义包的方法,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • python spotlight库简化交互式方法探索数据分析

    python spotlight库简化交互式方法探索数据分析

    这篇文章主要为大家介绍了python spotlight库简化的交互式方法探索数据,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Python的装饰器使用详解

    Python的装饰器使用详解

    最近在学习python,下面是在Python学习小组上介绍的内容,现学现卖、多练习是好的学习方式,希望大家能够喜欢
    2017-06-06
  • python文件读取和导包的绝对路径、相对路径详解

    python文件读取和导包的绝对路径、相对路径详解

    每次在读或写文件时,获取脚本文件的绝对路径和相对路径时很容易搞混,下面这篇文章主要给大家介绍了关于python文件读取和导包的绝对路径、相对路径的相关资料,需要的朋友可以参考下
    2022-04-04
  • Python 使用office365邮箱的示例

    Python 使用office365邮箱的示例

    这篇文章主要介绍了Python 使用office365邮箱的示例,帮助大家利用python进行高效办公,感兴趣的朋友可以了解下
    2020-10-10
  • 解决paramiko执行命令超时的问题

    解决paramiko执行命令超时的问题

    这篇文章主要介绍了解决paramiko执行命令超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python基础:面向对象详解

    python基础:面向对象详解

    这篇文章主要介绍了Python面向对象的相关内容,如果您想对Python编程的基础部分有所了解,这篇文章是值得一看的,需要的朋友可以参考下。
    2021-10-10

最新评论