python deque和list的效能對比

2021-10-03 12:12:27 字數 1670 閱讀 1367

使用list儲存資料時,按索引訪問元素很快,但是插入和刪除元素就很慢了,因為list是線性儲存,資料量大的時候,插入和刪除效率很低。

deque是為了高效實現插入和刪除操作的雙向列表,適合用於佇列和棧:

例子:每次擴充套件1億長度的list,看deque和list的效能。

# -*- coding:utf-8 -*-

from collections import deque

import time

s0 =[0

]*100000000

s1 = deque(

)while

true

: t1 = time.perf_counter(

) s1.extend(s0)

# 每次擴充套件1億長度的list

print

(time.perf_counter(

)-t1)

print

(len

(s1)

)

結果:

0.595923秒

100000000

0.595860秒

200000000

0.603796秒

300000000

0.606941秒

400000000

0.623324秒

500000000

1.448023秒

600000000

17.834734秒

700000000

5.571980秒

800000000

2.075523秒

900000000

2.494620秒

1000000000

deque每次擴張的效能還算平穩。

再來看list的效能

# -*- coding:utf-8 -*-

from collections import deque

import time

s0 =[0

]*100000000

# s1 = deque()

s1 =

while

true

: t1 = time.perf_counter(

) s1.extend(s0)

print

('%f秒'

%(time.perf_counter(

)-t1)

)print

(len

(s1)

)

0.357701秒

100000000

0.766810秒

200000000

1.249358秒

300000000

2.459489秒

400000000

21.623993秒

500000000

32.586217秒

600000000

69.980782秒

700000000

哇,簡直指數級增長,最後一次等了69秒。。。。

備註:我用的是志強xeon® e3 8核 8g 1333hz記憶體條 的台式電腦跑的。

所以對於儲存級別大的,用deque比較合適,不是特別大的list絕對夠用。

python deque模組用法總結

deque模組 內建list結構的加強版 是python標準庫collections中的一項,它提供了兩端都可進行新增 刪除操作的序列。建立deque序列 from collections import deque d deque from collections import deque d de...

Python Deque 模組使用詳解

建立deque序列 from collections import deque d deque deque提供了類似list的操作方法 d deque d.append 1 d.append 2 d.append 3 len d d 0 d 1 輸出結果 3 1 3 兩端都使用pop d deque...

關於LIS和memset 函式

關於最長上公升子串行問題,有兩種演算法,複雜度 o n 2 和 o nlogn 導航 紫書p274,這一種,dp i x 表示的是以i結尾的數的最長子序列是x,演算法就是從第乙個數開始遍歷,再對前面的數進行遍歷,再根據條件不斷地更新dp i 的值。這個演算法的主要在於內層迴圈浪費時間。memset ...