一文教你使用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面向?qū)ο罂偨Y(jié)及類(lèi)與正則表達(dá)式詳解
Python中的類(lèi)提供了面向?qū)ο缶幊痰乃谢竟δ埽侯?lèi)的繼承機(jī)制允許多個(gè)基類(lèi),派生類(lèi)可以覆蓋基類(lèi)中的任何方法,方法中可以調(diào)用基類(lèi)中的同名方法。這篇文章主要介紹了Python面向?qū)ο罂偨Y(jié)及類(lèi)與正則表達(dá)式 ,需要的朋友可以參考下2019-04-04
使用Python實(shí)現(xiàn)一個(gè)安全封裝EXE文件加密保護(hù)工具
文章介紹了使用Python開(kāi)發(fā)的EXE文件加密保護(hù)工具,該工具使用AES-256加密算法保護(hù)原始EXE文件,并通過(guò)美觀的密碼驗(yàn)證界面進(jìn)行訪問(wèn),需要的朋友可以參考下2025-12-12
淺談在django中使用filter()(即對(duì)QuerySet操作)時(shí)踩的坑
這篇文章主要介紹了淺談在django中使用filter()(即對(duì)QuerySet操作)時(shí)踩的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
python實(shí)現(xiàn)文件批量編碼轉(zhuǎn)換及注意事項(xiàng)
本文通過(guò)實(shí)例代碼給大家介紹了python實(shí)現(xiàn)文件批量編碼轉(zhuǎn)換及注意事項(xiàng),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2019-10-10
比較詳細(xì)Python正則表達(dá)式操作指南(re使用)
Python 1.5之前版本則是通過(guò) regex 模塊提供 Emecs 風(fēng)格的模式。Emacs 風(fēng)格模式可讀性稍差些,而且功能也不強(qiáng),因此編寫(xiě)新代碼時(shí)盡量不要再使用 regex 模塊,當(dāng)然偶爾你還是可能在老代碼里發(fā)現(xiàn)其蹤影2008-09-09
如何在Win10系統(tǒng)使用Python3連接Hive
這篇文章主要介紹了如何在Win10系統(tǒng)使用Python3連接Hive,幫助大家更好的利用python讀取數(shù)據(jù),進(jìn)行探索、分析和挖掘工作。感興趣的朋友可以了解下2020-10-10
Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解
這篇文章主要介紹了Pytorch中Tensor與各種圖像格式的相互轉(zhuǎn)化詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
python requests證書(shū)問(wèn)題解決
這篇文章主要介紹了python requests證書(shū)問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
Python利用wxPython制作股票價(jià)格查詢(xún)工具
在當(dāng)今信息時(shí)代,金融市場(chǎng)是一個(gè)引人注目的話題。本文將介紹如何使用 Yahoo Finance API、yfinance 模塊和 wxPython 庫(kù)來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的全球股市實(shí)時(shí)價(jià)格查詢(xún)工具,希望大家能夠喜歡2023-05-05
Python實(shí)現(xiàn)JSON數(shù)據(jù)提取與轉(zhuǎn)換的命令行工具程序
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)JSON數(shù)據(jù)提取與轉(zhuǎn)換的命令行工具程序,核心功能是從一個(gè)特定結(jié)構(gòu)的?JSON?輸入文件中提取特定數(shù)據(jù)并寫(xiě)入到一個(gè)新的?JSON?文件中,感興趣的小伙伴可以了解下2026-04-04

