一文教你使用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-04
python引入導(dǎo)入自定義模塊和外部文件的實(shí)例
下面小編就為大家?guī)?lái)一篇python引入導(dǎo)入自定義模塊和外部文件的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07
python數(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-04
Python實(shí)現(xiàn)刪除列表首元素的多種方式總結(jié)
在Python中,處理列表的操作是日常開(kāi)發(fā)中不可避免的任務(wù)之一,其中,刪除列表中的元素是一個(gè)常見(jiàn)的需求,本文為大家整理了Python中刪除列表中的第一個(gè)元素的多種方法,需要的可以參考下2023-12-12
matplotlib實(shí)現(xiàn)熱成像圖colorbar和極坐標(biāo)圖的方法
今天小編就為大家分享一篇matplotlib實(shí)現(xiàn)熱成像圖colorbar和極坐標(biāo)圖的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
python將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

