Python 進階—— list 的頭插和尾插
阿新 • • 發佈:2018-12-22
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 的操作效率低很多,尤其在問題的規模持續擴大,這兩個版本之間的差距只會越來越大。