python类SortedList的作用分析
本篇内容主要讲解"python类SortedList的作用分析",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"python类SortedList的作用分析"吧!
目录
SortedList 有序序列
方法
1.添加值
2.移除值
3.查找
4.迭代值
5. 其他
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]: 3sOut[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]: 8sOut[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=abOut[60]: [1, 2, 3]a[0]=0aOut[62]: [0, 2, 3]bOut[63]: [0, 2, 3]
浅拷贝(2)copy函数,浅拷贝传递子对象的引用,原始数据改变,只有子对象会改变。
a = [[1],2,3]b = a.copy()aOut[85]: [[1], 2, 3]bOut[86]: [[1], 2, 3]# 对象不改变a.append(4)aOut[88]: [[1], 2, 3, 4]bOut[89]: [[1], 2, 3]# 子对象跟着改变a[0].append(2)aOut[91]: [[1, 2], 2, 3, 4]bOut[92]: [[1, 2], 2, 3]
到此,相信大家对"python类SortedList的作用分析"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!