1. 程式人生 > >Python 進階—— list 的頭插和尾插

Python 進階—— list 的頭插和尾插

                     

list 最為常用的 append,其實執行的是尾插的概念。比如我們要新增的是一些外部資料來源(如它們可以是對一臺伺服器建立的連線),當我們欲實現最近優選的原則時,自然我們希望能夠反轉整個 list,如下程式碼演示:

In [1]: cnt  = 10**5In [2]: nums = []In [3]: for i in range(cnt):   ....:     nums.append(i)   ....:In [4]: nums.reverse()In [5]: nums[:5]Out[5]: [99999, 99998, 99997, 99996, 99995]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

與其在最後才將整個列表反轉,何不在列表建立時,就以一種逆序的方式新增元素,這正是頭插法的思路。

In [7]: nums = []In [8]: for i in range(cnt):   ....:     nums.insert(0, i)   ....:In [9]: nums[:5]Out[9]: [99999, 99998, 99997, 99996, 99995]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然而不幸的是,執行頭插要比正常的 append 的操作效率低很多,尤其在問題的規模持續擴大,這兩個版本之間的差距只會越來越大。