python - Python sorted() 内置函数 vs. list insert() 方法的效率

标签 python performance algorithm

我不是新手,但我用 Python 的不多,我的知识面比较广,对这门语言的了解不是很深,也许这里有知识渊博的人可以回答我的问题。我发现自己处于需要将项目添加到列表并将其按添加的项目排序的情况。一种快速的方法是。

list.append(item)                  // O(1)
list.sort()                        // ??

我想如果这是将项目添加到列表中的唯一方式,我希望排序会相当有效,因为列表会在每次添加时进行排序。但是,还有一个可行的方法:

inserted = False
for i in range(len(list)):         // O(N)
    if (item < list[i]): 
        list.insert(i, item)       // ??
        inserted = True
        break
if not inserted: list.append(item)

谁能告诉我其中一个是否明显更有效率?我倾向于第二种说法,但我真的不知道。

最佳答案

您正在寻找的是 bisect 模块,最有可能是 insort_left

所以你的表达式可以等效地写成

来自

some_list.append(item)                  // O(1)
some_list.sort()                        // ??

bisect.insort_left(some_list, item)

关于python - Python sorted() 内置函数 vs. list insert() 方法的效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14861262/

相关文章:

c# - 比较高性能的 int 数组

algorithm - booth 乘法算法是将 2 个正数相乘吗?

java - 无需任何方法即可选择列表中的最小和最大数字

Python - 与高斯卷积

Perl:分配 [] 或 {} 是否昂贵?如何快速重置数字/关联数组?

java - 固定长度数组与字段

php - 大 cookie 导致应用程序运行缓慢

python - CNTK:不使用 1 位 SGD 的 Python 数据并行训练

python - 调用 python 对象时超出最大递归深度

python - python中带前导零的整数的长度