五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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)的評論 (共 條)

分享到微博請遵守國家法律
申扎县| 宣武区| 重庆市| 南投县| 盐山县| 罗甸县| 淮阳县| 荣昌县| 炎陵县| 江津市| 凤阳县| 巴南区| 桑植县| 永济市| 连城县| 盱眙县| 张家川| 江华| 黔西县| 嘉兴市| 吴川市| 收藏| 马边| 南华县| 林芝县| 曲沃县| 新余市| 虎林市| 崇信县| 栾川县| 富源县| 小金县| 错那县| 宕昌县| 尼木县| 永嘉县| 凯里市| 浦北县| 汪清县| 监利县| 明光市|