python - 如何找到可以将新项目插入排序列表并保持排序的索引?

标签 python sortedlist

a = 132

b = [0, 10, 30, 60, 100, 150, 210, 280, 340, 480, 530]

我想知道 a 应该在有序列表 b 中的第 6 位。

最pythonic的方法是什么?

最佳答案

bisect是 Python 标准库中的一个模块,非常适合此任务。 bisect 模块中的函数 bisect 将为您提供值的插入点的索引。

让我举一个 bisect

的代码示例
from bisect import bisect
a = 132
b = [0, 10, 30, 60, 100, 150, 210, 280, 340, 480, 530]
print(bisect(b, a))

结果会是5,因为列表是从0开始的,所以实际上是第6位。

您可以知道的是将结果用于 insert

index = bisect(b, a)
b.insert(index, a)

或者没有中间变量

b.insert(bisect(b, a), a)

现在 b 将是 [0, 10, 30, 60, 100, 132, 150, 210, 280, 340, 480, 530]

关于python - 如何找到可以将新项目插入排序列表并保持排序的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11290767/

相关文章:

c# - 可以使用具有正确实现的比较器的 SortedList<>/SortedDictionary<> 来保证插入顺序吗?

c# - 如何解决 "Item has already been added. Key in dictionary:"错误?

python - 将字典转换为元组排序列表

python - 如何从充满 datetime.time 值的系列中提取小时、分钟和秒

java - Jython,如何获取脚本所在 jar 的基本路径?

python - 如何解决与 Windows 10 上安装 dlib 相关的问题?

android - 带有 SortedList 的嵌套 RecyclerView 不显示任何内容

python - 如何使用 setup.py 安装先决条件

python - 将遥测数据添加到视频 [python]

vb.net - SortedList“无法比较数组中的两个元素”