Python Sorted Containers 01 - Install and SortedList


Install

pip install sortedcontainers

SortedList

在插入、删除元素后仍然可以自动维护序列的顺序。

from sortedcontainers import SortedList
sl = SortedList()

插入元素

  1. 插入一整个列表:SortedList.update(List[val1, val2, ...])
  2. 插入一个元素:SortedList.add(value)

删除元素

  1. 按照元素值删除:SortedList.remove(value), SortedList.discard(value)
  2. 按照元素索引删除:SortedList.pop([index]), SortedList.__delitem__(index), del SortedList[index]
  3. 清空列表:SortedList.clear()

随机访问 - O(log n) 复杂度

  1. 查询元素是否存在:SortedList.__contains__(value), value in SortedList
  2. 查询元素索引:SortedList.index(value)
  3. 查询元素数量:SortedList.count(value)
  4. 二分查找元素插入位置:SortedList.bisect_left(value), SortedList.bisect_right(value)
  5. 切片:SortedList.__getitem__(index), SortedList[start:end]

迭代器

  1. 创建迭代器:SortedList.__iter__(), iter(SortedList)
  2. 反向迭代:SortedList.__reversed__(), reversed(SortedList)
  3. 根据值进行切片:SortedList.irange(start, end)
  4. 根据索引进行切片:SortedList.islice(start, end)

运算符操作

  1. 数组加和,拼接后排序操作:SortedList.__add__(), SortedList1 + SortedList2
  2. 数组数乘,倍增后排序操作:SortedList.__mul__(), SortedList * num

不支持的List类的api

  1. 赋值操作 -> add
# sl[0] = 1
del sl[0]
sl.add(1)
  1. 反序api:reverse -> reversed
# sl.reverse()
reversed(sl)
  1. 增加元素api:append -> add
# sl.append(value)
sl.add(value)
  1. 合并其他数组api:extend -> update
# sl.extend([val1, val2, ...])
sl.update([val1, val2, ...])
  1. 插入元素到指定位置api:insert -> add
# sl.insert(5, value)
sl.add(value)

文章作者: 一汪白水
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 一汪白水 !
  目录