python - python有排序列表吗?

标签 python list sorting

我的意思是一个结构:

    x.push() 操作的
  • O(log n) 复杂度
  • 找到一个元素的复杂度为 O(log n)
  • O(n) 复杂度来计算 list(x) 这将被排序

我还有一个关于 list(...).insert(...) 性能的相关问题,现在是 here .

最佳答案

您的 big-O 要求有什么特殊原因吗?或者你只是想让它快点? sortedcontainers模块是纯 Python 且速度很快(就像在 blist 和 rbtree 等 fast-as-C 实现中一样)。

performance comparison显示它的基准测试速度更快或与 blist 的排序列表类型相当。另请注意,rbtree、RBTree 和 PyAVL 提供排序的 dict 和 set 类型,但没有排序的列表类型。

如果性能是一项要求,请始终记住进行基准测试。一个使用 Big-O 表示法证明速度快的模块应该被怀疑,直到它也显示基准比较。

免责声明:我是 Python sortedcontainers 模块的作者。


安装:

pip install sortedcontainers

用法:

>>> from sortedcontainers import SortedList
>>> l = SortedList()
>>> l.update([0, 4, 1, 3, 2])
>>> l.index(3)
3
>>> l.add(5)
>>> l[-1]
5

关于python - python有排序列表吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1109804/

相关文章:

python - matplotlib 中带有箭袋图的自定义颜色条

python - 如何使 argparse 解析器也用作子解析器

python - 如何使用自定义权限类发送 401 错误代码而不是 403?

python - 如何在元组列表上使用 reduce 函数?

python - 在 Pandas pivot_table 中排序

mysql - 按两列排序

python - 在日期时间索引上组合 DataFrame,如果索引相同,则对其他行中的值求和

list - 删除序言中列表中的共享项目

c# - 询问 - 如何将多个 List<T> 添加到具有特定名称的 List<T>

c# - 对包含字母和破折号的字符串进行排序时出现意外行为