久久久精品2019免费观看_亚洲国产精品成人久久久_69国产成人综合久久精品91_国产精品久久精品视

Python 隊(duì)列和堆棧

在編程中有一個(gè)很重要的概念叫隊(duì)列和堆棧,這是兩種數(shù)據(jù)結(jié)構(gòu),都是用來存儲(chǔ)數(shù)據(jù)的,現(xiàn)在我們?cè)敿?xì)了解列表功能后,剛好可以用列表來實(shí)現(xiàn)這兩種數(shù)據(jù)結(jié)構(gòu)。

隊(duì)列存儲(chǔ)數(shù)據(jù)的特點(diǎn)是first in first out,通常大家都會(huì)簡(jiǎn)寫成大寫的FIFO。意思就是先進(jìn)先出。

這種數(shù)據(jù)結(jié)構(gòu)類似于商場(chǎng)里做的那種電動(dòng)扶梯。先上扶梯的最后一定是先下扶梯的。

我們可以用列表來模擬這種效果。

首先寫一個(gè)空列表,然后接著就要我那個(gè)列表里增加值了,可以用點(diǎn)append,當(dāng)然你想用insert也可以。增加三個(gè)。分別是張三、李四、王五。然后打印這個(gè)列表。

l = []
l.append('張三')
l.append('李四')
l.append('王五')
print(l)

這就是列表模擬的入隊(duì)操作,我們把這個(gè)列表看成是一個(gè)隊(duì)伍的話,張三就是這個(gè)隊(duì)伍的隊(duì)首,王五就是隊(duì)尾。

上面說過隊(duì)列是先進(jìn)先出,那么排在隊(duì)首的就應(yīng)該先出來。那出隊(duì)的操作怎么實(shí)現(xiàn)呢?

首先用remove是肯定不行的吧,因?yàn)閞emove是直接把值刪掉了,我們要實(shí)現(xiàn)的出隊(duì)是讓值從列表里面出來,我們要拿到這個(gè)值,而不是直接刪掉。

所以也不能用del,要把值拿到很明顯就要用到pop這個(gè)功能了。注意我們不給他指定刪掉哪個(gè)的話,它默認(rèn)是刪除最后一個(gè),這樣就不是先進(jìn)先出了,而是變成了先進(jìn)后出了。

我們要實(shí)現(xiàn)先進(jìn)先出,就直接輸入0號(hào)索引就行了。

l = []
l.append('張三')
l.append('李四')
l.append('王五')
print(l)
print(l.pop(0))
print(l.pop(0))
print(l.pop(0))

這樣就把值依次按先進(jìn)先出的順序取出來了。這樣是模擬隊(duì)列這種數(shù)據(jù)結(jié)構(gòu)了。

下面我們繼續(xù)看堆棧,堆棧就是lase in first out,一般簡(jiǎn)寫成LIFO。意思就是后進(jìn)先出。

然后我們來模擬一下,還是上面的代碼改一下。入棧是一模一樣的,一個(gè)個(gè)進(jìn)來,但是出棧就不一樣了。

上面講了堆棧是后進(jìn)先出,所以出去的時(shí)候就是最后一個(gè)先出去,pop括號(hào)里就不能寫索引,上面也說過不寫的話就是默認(rèn)最后一個(gè)刪掉。

l=[]
# l.append('張三')
# l.append('李四')
# l.append('王五')
# print(l)
# print(l.pop())
# print(l.pop())
# print(l.pop())

打印結(jié)果就是王五先出來,最后張三出來。

現(xiàn)在應(yīng)該明白隊(duì)列和堆棧是兩種數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)進(jìn)去和出來的順序不一樣,然后怎么去用列表去實(shí)現(xiàn)它。

現(xiàn)在就知道這么多就行了,具體的應(yīng)用場(chǎng)景先不用考慮,后面寫項(xiàng)目的時(shí)候才會(huì)用到它。

對(duì)于操作就是append和pop,其他沒什么說的。只是剛好講完了列表,所以先講一下隊(duì)列和堆棧的概念。

未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 隊(duì)列和堆棧

贊 (0) 打賞

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞