最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

什么是隊列?Python中如何使用隊列(62)

2023-06-23 16:53 作者:和貓妹學Python  | 我要投稿

小朋友們好,大朋友們好!

我是貓妹,一名愛上Python編程的小學生。

和貓妹學Python,一起趣味學編程。

今日主題

什么是隊列?

隊列有哪些接口(api)?

在Python中如何表示隊列?

什么是隊列

隊列是一個特殊的有序表,其插入操作在表的一端進行,而刪除操作在表的另一端進行,插入的端叫隊尾,刪除的端叫隊首。

隊列有先進先出的特性。

在我們的生活中,有很多都屬于隊列,比如排隊買票,排隊安檢等。

隊列有哪些接口

add(x):入隊,加入隊列

delete():出隊,從隊列中出來

clear():清空隊列

isEmpty():判斷隊列是否為空

isFull():判斷隊列是否為滿

length():隊列的當前長度

capability():隊列的容量,也就是隊列滿時的長度

Python中的雙端隊列deque

在Python中的標準庫collections中,包含了一個模塊:雙端隊列deque。

隊列是在一端入隊,另一端出隊。

雙端隊列呢?

就是在兩個端口都可以入隊和出隊。

雙端隊列的導(dǎo)入

導(dǎo)入deque:

from collections import deque

雙端隊列的創(chuàng)建

創(chuàng)建空的雙端隊列:

q=deque()

創(chuàng)建一個非空雙端隊列,可以傳入一個可迭代對象:

q=deque([1,2,3])

可以指定雙端隊列的容量。如上不指定容量,表示可以無限入隊。

q=deque([1,2,3],10)

入隊操作

q.append(4):右端入隊一個元素

q.appendleft(5):左端入隊一個元素

q.extend([a,b,x]):右端入隊多個元素,相當于多次q.append

q.extendleft([x,y,z]):左端入隊多個元素,相當于多次q.appendleft

出隊操作

q.pop():右端出隊

q.popleft():左端出隊

清空隊列

q.clear():清空隊列

隊列容量

q.maxlen:隊列的最大容量。

如果初始化隊列時未指定隊列最大容量,那么它是None。

隊列當前長度

len(q):用函數(shù)len測量雙端隊列q的長度

隊列是否滿

q.maxlen ==?q.popleft():當前長度等于最大長度,雙端隊列滿

隊列為空

not q:True表示隊列為空,否則非空。

其他接口之count

它可以統(tǒng)計相同元素的個數(shù)

q=deque([1,2,2,3,4,5,6])

print(q.count(2))#2

其他接口之remove

刪除指定元素

q=deque([1,2,2,3,4,5,6])

print(q.remove(2))

print(q)#deque([1,2,3,4,5,6)]

其他接口之reverse

翻轉(zhuǎn)順序

q=deque([1,2,3,4,5,6])

print(q.reverse())#deque([6,5,4,3,2,1)]

其他接口之rotate

轉(zhuǎn)動,循環(huán)

q=deque([1,2,3,4,5,6])

print(q.rotate(1))#deque([6,1,2,3,4,5)]

q=deque([1,2,3,4,5,6])

print(q.rotate(2))#deque([5,6,1,2,3,4)]

q=deque([1,2,3,4,5,6])

print(q.rotate(-1))#deque([2,3,4,5,6,1)]

q=deque([1,2,3,4,5,6])

print(q.rotate(-2))#deque([3,4,5,6,1,2)]

幾道編程思考題

看得出來,雙端隊列deque,功能強大,api全面。

在解決實際問題中,隊列經(jīng)常使用。

這里拋磚引玉,引出幾道編程思考題目,你可以用隊列知識搞定它嗎?

楊輝三角

楊輝三角是中國數(shù)學史上的一個偉大成就,如下圖。

它每層的數(shù)據(jù)都很有規(guī)律,首尾都是1。除第一、二層外,其他層的非邊緣數(shù)據(jù)都來源于上層兩個數(shù)據(jù)的和。

第n層數(shù)據(jù)是怎樣的?

劃分無沖突子集問題

某動物園搬家,要運走N種動物,老虎與獅子放進一個籠子打架,大象與犀牛放一個籠子打架,野豬與獵狗放在一個籠子里打架…設(shè)計算法,使得裝進同一個籠子的動物互相不打架。

A={0,1,2,3,4,5,6,7,8}#代表N種動物的集合,

R={(1,4),(4,8),(1,8),(1,7),(8,3),(1,0),(0,5),(1,5),(3,4),(5,6),(5,2),(6,2),(6,4)}#沖突關(guān)系集合

數(shù)字變換

對于一對正整數(shù)a和b,對a只能進行加1,減1,乘2操作,問最小對a進行幾次操作能得到b?

例如:

a=3,b=11,可通過3*2*2-1,3次操作得到11

a=5,b=8,可通過(5-1)*2,2次操作得到8


上述三個應(yīng)用,都可以通過Python用隊列編程來解決問題哦!

貓妹也會持續(xù)更新的,敬請關(guān)注!

好了,我們今天就學到這里吧!

如果遇到什么問題,咱們多多交流,共同解決。

我是貓妹,咱們下次見!


什么是隊列?Python中如何使用隊列(62)的評論 (共 條)

分享到微博請遵守國家法律
临武县| 定边县| 沅江市| 临城县| 宾阳县| 河北区| 明水县| 泰宁县| 夏河县| 若尔盖县| 信丰县| 阿荣旗| 贡觉县| 通江县| 紫阳县| 汤阴县| 康平县| 沅江市| 固始县| 图片| 江门市| 定安县| 平武县| 安新县| 靖远县| 班戈县| 海南省| 灵宝市| 增城市| 简阳市| 广东省| 衡阳市| 财经| 松阳县| 封丘县| 沂南县| 济源市| 库车县| 阳春市| 沁阳市| 商洛市|