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

Python 隊列和堆棧

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

上面講了堆棧是后進先出,所以出去的時候就是最后一個先出去,pop括號里就不能寫索引,上面也說過不寫的話就是默認最后一個刪掉。

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

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

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

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

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

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

贊 (0) 打賞

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

支付寶掃一掃打賞

微信掃一掃打賞