比较,Python deque或索引?

时间:2017-10-03 08:05:37

标签: python performance time-complexity

我需要访问Python list的最左边的元素,同时从左侧弹出元素。此用法的一个示例可以是合并排序的合并操作。 有两种很好的方法可以做到。

  • collections.deque
  • 使用索引,在弹出时保持一个递增的整数。

这两种方法在复杂性方面似乎都很有效(应该在程序开头提到我需要将列表转换为deque,这意味着一些额外的O(n))。

那么在风格和速度方面,哪种方式最适合Python使用?我没有看到官方推荐或没有遇到类似的问题,这就是为什么我这么问。

提前致谢。

相关: Time complexity

1 个答案:

答案 0 :(得分:0)

绝对是collections.deque。首先,它已经写好,所以你不必这样做。其次,它是用C编写的,所以它可能会比另一个Python重新实现快得多。第三,使用索引使列表的头部未使用,而queue更聪明。仅添加标准列表以增加每个左侧弹出的起始索引是非常低效的,因为您需要更频繁地重新分配列表。