python之佇列學習

2021-10-11 11:41:14 字數 3981 閱讀 3276

列表list雖然訪問速度很快,但是當資料比較多的時候,查詢和刪除資料的效率就會變的很低,這時候可以使用deque()。

deque()是雙端列表,即兩端都可以進行插入和刪除操作:

from collections import deque

# 建立乙個空的佇列

q = deque(

)

# python3也可以這樣寫

q = collections.deque(

)

from collections import deque

# 建立乙個空的佇列

q = deque()2

)print

(q)# 佇列新增乙個可迭代元素:列表

list1 =[3

,4,5

]print

(q)# 佇列新增乙個可迭代元素:元組

tuple1 =

('a'

,'c'

)print

(q)

# 輸出結果為

deque([2

])deque([2

,[3,

4,5]

])deque([2

,[3,

4,5]

,('a',

'c')

])

from collections import deque

# 建立乙個空的佇列

q = deque([1

])('a'

,'b'))

print

(q)

# 輸出為

deque([(

'a',

'b'),1

])

3. clear():清空佇列

q.clear(

)print

(q)

# 輸出為

deque(

)

4. count(value):返回某個值出現的次數

from collections import deque

# 建立乙個空的佇列

q = deque([1

])('a'

,'b'))

print

(q.count(1)

)print

(q)

# 輸出為

1deque([(

'a',

'b'),1

])

5. extend():使用可迭代的元素擴充套件雙端佇列的右側

from collections import deque

# 建立乙個空的佇列

q = deque([1

])('a'

,'b'))

q.extend([2

,3,4

])print

(q)

# 輸出為

deque([(

'a',

'b'),1

,2,3

,4])

6. extendleft():使用可迭代的元素擴充套件雙端佇列的左側

from collections import deque

# 建立乙個空的佇列

q = deque([1

])('a'

,'b'))

q.extendleft([2

,3,4

])print

(q)

# 輸出為

deque([4

,3,2

,('a',

'b'),1

])

7. pop():移除並返回佇列最右邊的值

from collections import deque

# 建立乙個空的佇列

q = deque([1

])('a'

,'b'))

x = q.pop(

)print

(x)

# 輸出為

1

8. popleft():移除並返回佇列最左邊的值

from collections import deque

# 建立乙個空的佇列

q = deque([1

])('a'

,'b'))

x = q.popleft(

)print

(x)

# 輸出為

('a'

,'b'

)

9. remove(value):刪除佇列中第一次出現的該值

from collections import deque

# 建立乙個空的佇列

q = deque([1

])q.extend([1

,2,3

,2,2

,2])

print

("隊列為:"

,q)q.remove(2)

print

("刪除元素後的隊列為:"

,q)

# 輸出為

隊列為: deque([1

,1,2

,3,2

,2,2

])刪除元素後的隊列為: deque([1

,1,3

,2,2

,2])

10. reverse():佇列反轉

from collections import deque

# 建立乙個空的佇列

q = deque([1

])q.extend([1

,2,3

,2,2

,2])

print

("隊列為:"

,q)q.reverse(

)print

("反轉後的隊列為:"

,q)

# 輸出為

隊列為: deque([1

,1,2

,3,2

,2,2

])反轉後的隊列為: deque([2

,2,2

,3,2

,1,1

])

11. rotate():將雙端佇列向右旋轉n步(預設為n = 1)。 如果n為負,則向左旋轉。

from collections import deque

# 建立乙個空的佇列

q = deque([1

])q.extend([1

,2,3

,2,2

,2])

print

("隊列為:"

,q)q.rotate(

)print

("向右旋轉1步後的隊列為:"

,q)

# 輸出為

隊列為: deque([1

,1,2

,3,2

,2,2

])向右旋轉1步後的隊列為: deque([2

,1,1

,2,3

,2,2

])

python學習之佇列(Queue)

佇列模組是繼承multi producer,multi consumer queues。它經常被用作處理執行緒操作,比如要進行多執行緒之間通訊時。佇列有三種型別,這種不同體現在檢索順序上。這三種分別為fifo佇列 lifo佇列 它更像我們所說的棧 和優先順序佇列。fifo佇列是先進先出 lifo佇列...

Python學習 佇列實現

class queue object def init self 建構函式 主要用來在建立物件時初始化物件,即為物件成員變數賦初始值 self.data list def init queue self 但是我就很不明白這是幹嘛的,刪除它,然後執行也沒什麼錯誤。self.data list def ...

Python筆記之雙向佇列

collections.deque類 雙向佇列 是乙個執行緒安全,可以快速從兩端新增或者刪除元素的資料型別。而且如果想要一種資料型別來存放 最近用到的幾個元素 deque也是乙個很好的選擇。這是因為在新建乙個雙向佇列的時候,你可以指定這個佇列的大小,如果這個佇列滿員了,還可以從反向端刪除過期的元素,...