python - Python 3 中 bisect.insort 的奇怪行为
问题描述
Python 3.8.2
在 linux 机器上,如果我创建一个list
并使用insort
它,我会得到预期的结果;另一方面,如果我在调用之前颠倒容器中元素的顺序insort
发生
>>> a = list(range(10))
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a.reverse()
>>> a
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> bisect.insort(a,6)
>>> a
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 6]
我期待[9, 8, 7, 6, 6, 5, 4, 3, 2, 1, 0]
的不是那样。
为什么会产生这个结果?
解决方案
来自文档:
该模块支持以排序 顺序维护列表,而无需在每次插入后对列表进行排序。
也来自文档:
与 sorted() 函数不同,bisect() 函数具有键或反转参数是没有意义的,因为这会导致设计效率低下(对 bisect 函数的连续调用不会“记住”所有先前的键查找) .
推荐阅读
- python - 返回 int python3 的临时文件路径
- wso2 - [WSO2][DSS]移除默认命名空间
- javascript - 关于 RegExp 匹配、HTML 标记和换行符的困惑
- android - java.lang.IllegalArgumentException:已添加:Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat
- c# - 使用 C# 的 SQL Server 数据库备份进度
- c - 如何将字符串分配给C中的变量
- qt - 如何检查我的 qt 应用程序是否可以与 OpenGL2.0 和 GLSL 一起运行?
- c - 为什么 qsort 通过使用 typedef 枚举在 gcc 6.3.0 中导致错误?
- c++ - 转换为基本 for 循环
- python - tf.constant 和 tf.convert_to_tensor 有什么区别