欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python數(shù)據(jù)結構與算法中的隊列詳解(2)

 更新時間:2022年03月09日 16:52:51   作者:姜學遷  
這篇文章主要為大家詳細介紹了Python中的隊列,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

傳土豆

隊列的一個典型方法是模擬需要以 FIFO 方式管理數(shù)據(jù)的真實場景??紤]這樣一個游戲:傳土豆。在這個游戲中,成員們圍成一圈,并依次盡可能快地傳遞一個土豆。在某個時刻,大家停止傳遞,此時手里有土豆的成員就得退出游戲。 重復上述過程,直到只剩下一個成員。

在這里插入圖片描述

我們將針對傳土豆游戲實現(xiàn)通用的模擬程序。該程序接受一個名字列表和一個用于計數(shù)的常量 num ,并且返回最后剩下的那個人的名字。

我們使用隊列來模擬一個環(huán)。即假設握著土豆的人位于隊列的頭部。在模擬傳土豆的過程中,程序將這個人的名字移出隊列,然后立刻將其插入隊列的尾部。隨后,這個人會一直等待,直到再次到達隊列的頭部。在出列和入列 num 次之后,此時位于隊列頭部的人出局,新一輪游戲開始。如此反復,直到隊列中只剩下一個名字(即隊列的大小為 1)。

class Queue:
    def __init__(self):
        self.items = []            # 構建空隊列
    def isEmpty(self):
        return self.items ==[]     # 判斷是否為空
    def enqueue(self,item):
        self.items.insert(0, item) # 在隊列尾部(列表左端)插入元素
    def dequeue(self):
        return self.items.pop()    # 在隊列頭部(列表右端)移出元素
    def size(self):
        return len(self.items)     # 隊列(列表)長度
    def look(self):
        print(self.items)
        
def transmitPotato(nameList, num):
    simqueue = Queue()     # 創(chuàng)建隊列
    for name in nameList:  # 遍歷成員姓名列表
        simqueue.enqueue(name)   # 成員姓名入隊列
    while simqueue.size() > 1:  # 當隊列元素個數(shù)大于1時 循環(huán)執(zhí)行
        for i in range(num):  # 循環(huán)num次(土豆傳遞num次)
            # 成員姓名從隊頭轉換至隊尾
            simqueue.enqueue(simqueue.dequeue())
        # 成員姓名出隊(此成員淘汰出局)
        simqueue.dequeue()
    return simqueue.dequeue()  # 返回隊列里最后剩下的名字

調用 transmitPotato 函數(shù),使用 7 作為計數(shù)常量,將得到以下結果:

在這里插入圖片描述

注意,在上例中,計數(shù)常量大于列表中的名字個數(shù)。 這不會造成問題,因為隊列模擬了一個環(huán)。同時需要注意,當名字列表載入隊列時,列表中的第一個名字出現(xiàn)在隊列的頭部。在上例中,小明是列表中的第一個元素,因此處在隊列的最前端。

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!    

相關文章

  • Python中static相關知識小結

    Python中static相關知識小結

    static用法:是一個修飾符,用于修飾成員(成員變量,成員函數(shù)).當成員被靜態(tài)修飾后,就多了一個調用方式,除了可以被對象調用外,還可以直接被類名調用,格式——類名.靜態(tài)成員。
    2018-01-01
  • Django vue前后端分離整合過程解析

    Django vue前后端分離整合過程解析

    這篇文章主要介紹了Django vue前后端分離整合過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Python venv虛擬環(huán)境配置過程解析

    Python venv虛擬環(huán)境配置過程解析

    這篇文章主要介紹了Python venv虛擬環(huán)境配置過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • python使用PyV8執(zhí)行javascript代碼示例分享

    python使用PyV8執(zhí)行javascript代碼示例分享

    這篇文章主要介紹了python使用PyV8執(zhí)行javascript的小示例,大家參考使用吧
    2013-12-12
  • PyQt5通過信號實現(xiàn)MVC的示例

    PyQt5通過信號實現(xiàn)MVC的示例

    這篇文章主要介紹了PyQt5通過信號實現(xiàn)MVC的示例,幫助大家更好的理解和使用pyqt5,感興趣的朋友可以了解下
    2021-02-02
  • Python打包可執(zhí)行文件的方法詳解

    Python打包可執(zhí)行文件的方法詳解

    這篇文章主要介紹了Python打包可執(zhí)行文件的方法,結合實例形式分析了Python基于py2exe及PyInstall等打包生成可執(zhí)行文件的相關技巧,需要的朋友可以參考下
    2016-09-09
  • Python全棧之文件函數(shù)和函數(shù)參數(shù)

    Python全棧之文件函數(shù)和函數(shù)參數(shù)

    這篇文章主要為大家介紹了Python的文件函數(shù)和函數(shù)參數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python-opencv 雙線性插值實例

    Python-opencv 雙線性插值實例

    今天小編就為大家分享一篇Python-opencv 雙線性插值實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Python中執(zhí)行MySQL結果限制和分頁查詢示例詳解

    Python中執(zhí)行MySQL結果限制和分頁查詢示例詳解

    這篇文章主要為大家介紹了Python中執(zhí)行MySQL結果限制和分頁查詢示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • 簡單了解Python生成器是什么

    簡單了解Python生成器是什么

    這篇文章主要介紹了簡單了解Python生成器是什么,生成器就是一個在行為上和迭代器非常類似的對象,如果把迭代器比作 Android 系統(tǒng),那么生成器就是 iOS,二者功能上差不多,但是生成器更優(yōu)雅,需要的朋友可以參考下
    2019-07-07

最新評論