一文教你使用Python實(shí)現(xiàn)本地分頁(yè)
在項(xiàng)目開(kāi)發(fā)的過(guò)程中,遇到分頁(yè)的第一頁(yè)就展示大量的數(shù)據(jù),導(dǎo)致前端列表加載展示的速度慢,所以需要在本地加入分頁(yè)處理,把所有數(shù)據(jù)先放到內(nèi)存里,下面我用Python演示如何實(shí)現(xiàn)本地分頁(yè)的算法(針對(duì)二級(jí)數(shù)據(jù)結(jié)構(gòu))
initialSize = 2 # 首屏展示條數(shù) eachSize = 5 # 剩余頁(yè)展示條數(shù) local_pages = [] # 本地分頁(yè)數(shù)據(jù) def makePage(d): ''' 制作分頁(yè)數(shù)據(jù) ''' local_pages.clear() if calcSize(d) > initialSize: # 總條數(shù)大于首屏數(shù),使用本地分頁(yè) sublist = [] for item in d: for child in item["child"]: sublist.append(child) firstPageSize = min(len(sublist), initialSize) # 第一頁(yè)的大小 local_pages.append(sublist[0:firstPageSize]) # 取第一頁(yè)的集合 remain_size = len(sublist)-firstPageSize # 剩余條數(shù) group_count = int(remain_size / eachSize) # 計(jì)算分頁(yè)數(shù) last_count = remain_size % eachSize # 取余,最后剩余多少條 idx = 0 for idx in range(group_count): start = firstPageSize + idx * eachSize end = start + eachSize local_pages.append(sublist[start:end]) # 新增頁(yè)集合 if last_count > 0: local_pages.append(sublist[-last_count:]) # 余數(shù)不為0,將作為最后一頁(yè)集合 pass def calcSize(d)->int: ''' 計(jì)算總條數(shù) ''' size = 0 for item in d: size += len(item["child"]) + 1 return size def printPage(): ''' 打印頁(yè)面 ''' idx = 0 for p in local_pages: idx += 1 print("page:{}".format(idx)) for item in p: print(item) data = [{"id":"1", "name":"parent_1", "child":[ {"id":"1_1", "name":"RS234326348264", "parent_id":"1" }, {"id":"1_2", "name":"RS234326348264", "parent_id":"1" }, {"id":"1_3", "name":"RS234326348264", "parent_id":"1" }, {"id":"1_4", "name":"RS234326348264", "parent_id":"1" }, {"id":"1_5", "name":"RS234326348264", "parent_id":"1" }, {"id":"1_6", "name":"RS234326348264", "parent_id":"1" }, {"id":"1_7", "name":"RS234326348264", "parent_id":"1" }, {"id":"1_8", "name":"RS234326348264", "parent_id":"1" }, {"id":"1_9", "name":"RS234326348264", "parent_id":"1" }]}, {"id":"2", "name":"parent_2", "child":[ {"id":"2_1", "name":"RS234326348264", "parent_id":"2" }]}] print(f"首屏展示條數(shù):{initialSize}") print(f"剩余頁(yè)展示條數(shù):{eachSize}") makePage(data) printPage()
打印結(jié)果
首屏展示條數(shù):2
剩余頁(yè)展示條數(shù):5
page:1
{'id': '1_1', 'name': 'RS234326348264', 'parent_id': '1'}
{'id': '1_2', 'name': 'RS234326348264', 'parent_id': '1'}
page:2
{'id': '1_3', 'name': 'RS234326348264', 'parent_id': '1'}
{'id': '1_4', 'name': 'RS234326348264', 'parent_id': '1'}
{'id': '1_5', 'name': 'RS234326348264', 'parent_id': '1'}
{'id': '1_6', 'name': 'RS234326348264', 'parent_id': '1'}
{'id': '1_7', 'name': 'RS234326348264', 'parent_id': '1'}
page:3
{'id': '1_8', 'name': 'RS234326348264', 'parent_id': '1'}
{'id': '1_9', 'name': 'RS234326348264', 'parent_id': '1'}
{'id': '2_1', 'name': 'RS234326348264', 'parent_id': '2'}
到此這篇關(guān)于一文教你使用Python實(shí)現(xiàn)本地分頁(yè)的文章就介紹到這了,更多相關(guān)Python本地分頁(yè)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python利用matplotlib生成圖片背景及圖例透明的效果
這篇文章主要給大家介紹了Python利用matplotlib生成圖片背景及圖例透明效果的相關(guān)資料,文中給出了詳細(xì)的示例代碼,相信對(duì)大家具有一定的參考家價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-04-04python引入導(dǎo)入自定義模塊和外部文件的實(shí)例
下面小編就為大家?guī)?lái)一篇python引入導(dǎo)入自定義模塊和外部文件的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07python數(shù)據(jù)預(yù)處理之將類別數(shù)據(jù)轉(zhuǎn)換為數(shù)值的方法
下面小編就為大家?guī)?lái)一篇python數(shù)據(jù)預(yù)處理之將類別數(shù)據(jù)轉(zhuǎn)換為數(shù)值的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07利用Python?NumPy庫(kù)及Matplotlib庫(kù)繪制數(shù)學(xué)函數(shù)圖像
最近開(kāi)始學(xué)習(xí)數(shù)學(xué)了,有一些題目的函數(shù)圖像非常有特點(diǎn),下面這篇文章主要給大家介紹了關(guān)于利用Python?NumPy庫(kù)及Matplotlib庫(kù)繪制數(shù)學(xué)函數(shù)圖像的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04Python實(shí)現(xiàn)刪除列表首元素的多種方式總結(jié)
在Python中,處理列表的操作是日常開(kāi)發(fā)中不可避免的任務(wù)之一,其中,刪除列表中的元素是一個(gè)常見(jiàn)的需求,本文為大家整理了Python中刪除列表中的第一個(gè)元素的多種方法,需要的可以參考下2023-12-12matplotlib實(shí)現(xiàn)熱成像圖colorbar和極坐標(biāo)圖的方法
今天小編就為大家分享一篇matplotlib實(shí)現(xiàn)熱成像圖colorbar和極坐標(biāo)圖的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12python將matplotlib嵌入到tkinter中的步驟詳解
tkinter是Python標(biāo)準(zhǔn)庫(kù)中自帶的GUI工具,使用十分方便,如能將matplotlib嵌入到tkinter中,就可以做出相對(duì)專業(yè)的數(shù)據(jù)展示系統(tǒng),很有競(jìng)爭(zhēng)力,本文就給大家介紹python將matplotlib嵌入到tkinter中的方法步驟,需要的朋友可以參考下2023-08-08