文档链接:https://grantjenks.com/docs/sortedcontainers/sortedlist.html
初始化
from sortedcontainers import SortedList
sL = SortedList()
sL
from sortedcontainers import SortedList
sL = SortedList([3, 1, 2, 5, 4])
sL
改降序
from sortedcontainers import SortedList
sL = SortedList([1, 2, 2, 3, 3, 3, 4, 4, 4, 4], key = lambda x : -x)
print(sL)
添加元素
add
from sortedcontainers import SortedList
sL = SortedList()
sL.add(3)
sL.add(1)
sL.add(2)
sL
移除元素
⭐ discard 无警告
from sortedcontainers import SortedList
sL = SortedList([1, 2, 3, 4, 5])
sL.discard(5)
sL.discard(0) # 非 sL 中元素, 无警告
sL
remove 有警告
from sortedcontainers import SortedList
sL = SortedList([1, 2, 3, 4, 5])
sL.remove(5)
print(sL)
sL.remove(0) # 非 sL 中元素 无警告
print(sL)
pop
from sortedcontainers import SortedList
sL = SortedList('abcde')
sL.pop() # 默认索引为 -1
print(sL)
sL.pop(2) # 若索引出界, 警告
print(sL)
del
from sortedcontainers import SortedList
sL = SortedList('abcde')
del sL[2]
print(sL)
del sL[:2]
print(sL)
更新为 有序列表 update
from sortedcontainers import SortedList
sL = SortedList()
sL.update([3, 1, 2])
sL
清空数组 clear
查询 O(log n)
bisect_left()
from sortedcontainers import SortedList
sL = SortedList([10, 11, 12, 13, 14])
sL.bisect_left(12)
bisect_right()
from sortedcontainers import SortedList
sL = SortedList([10, 11, 12, 13, 14])
sL.bisect_right(12)
是否包含 in
from sortedcontainers import SortedList
sL = SortedList([1, 2, 3, 4, 5])
print( 3 in sL)
⭐ 迭代 irange 按照元素切
from sortedcontainers import SortedList
sL = SortedList('abcdefghij')
print(list(sL.irange('c', 'f'))) # 包含
⭐ 切段 islice 按照索引切
from sortedcontainers import SortedList
sL = SortedList('abcdefghij')
print(list(sL.islice(2, 6)))
普通索引 和切片
from sortedcontainers import SortedList
sL = SortedList('abcde')
print(sL[1])
print(sL[-1])
print(sL[2:5])
其它
count() 统计某元素频次
from sortedcontainers import SortedList
sL = SortedList([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
print(sL.count(3))
index() 查某元素索引
from sortedcontainers import SortedList
sL = SortedList('abcde')
print(sL.index('d'))
print(sL.index('z'))
加法 +
from sortedcontainers import SortedList
sL1 = SortedList('bat')
sL2 = SortedList('cat')
sL1 + sL2
from sortedcontainers import SortedList
sL = SortedList('bat')
sL += 'cat'
sL
乘积 * n
from sortedcontainers import SortedList
sL = SortedList('abc')
sL *= 3
sL