一文教你使用Python實現(xiàn)本地分頁
在項目開發(fā)的過程中,遇到分頁的第一頁就展示大量的數(shù)據(jù),導致前端列表加載展示的速度慢,所以需要在本地加入分頁處理,把所有數(shù)據(jù)先放到內存里,下面我用Python演示如何實現(xiàn)本地分頁的算法(針對二級數(shù)據(jù)結構)
initialSize = 2 # 首屏展示條數(shù)
eachSize = 5 # 剩余頁展示條數(shù)
local_pages = [] # 本地分頁數(shù)據(jù)
def makePage(d):
'''
制作分頁數(shù)據(jù)
'''
local_pages.clear()
if calcSize(d) > initialSize: # 總條數(shù)大于首屏數(shù),使用本地分頁
sublist = []
for item in d:
for child in item["child"]:
sublist.append(child)
firstPageSize = min(len(sublist), initialSize) # 第一頁的大小
local_pages.append(sublist[0:firstPageSize]) # 取第一頁的集合
remain_size = len(sublist)-firstPageSize # 剩余條數(shù)
group_count = int(remain_size / eachSize) # 計算分頁數(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]) # 新增頁集合
if last_count > 0:
local_pages.append(sublist[-last_count:]) # 余數(shù)不為0,將作為最后一頁集合
pass
def calcSize(d)->int:
'''
計算總條數(shù)
'''
size = 0
for item in d:
size += len(item["child"]) + 1
return size
def printPage():
'''
打印頁面
'''
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"剩余頁展示條數(shù):{eachSize}")
makePage(data)
printPage()
打印結果
首屏展示條數(shù):2
剩余頁展示條數(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'}
到此這篇關于一文教你使用Python實現(xiàn)本地分頁的文章就介紹到這了,更多相關Python本地分頁內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用Python實現(xiàn)一個安全封裝EXE文件加密保護工具
文章介紹了使用Python開發(fā)的EXE文件加密保護工具,該工具使用AES-256加密算法保護原始EXE文件,并通過美觀的密碼驗證界面進行訪問,需要的朋友可以參考下2025-12-12
淺談在django中使用filter()(即對QuerySet操作)時踩的坑
這篇文章主要介紹了淺談在django中使用filter()(即對QuerySet操作)時踩的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
如何在Win10系統(tǒng)使用Python3連接Hive
這篇文章主要介紹了如何在Win10系統(tǒng)使用Python3連接Hive,幫助大家更好的利用python讀取數(shù)據(jù),進行探索、分析和挖掘工作。感興趣的朋友可以了解下2020-10-10
Python實現(xiàn)JSON數(shù)據(jù)提取與轉換的命令行工具程序
這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)JSON數(shù)據(jù)提取與轉換的命令行工具程序,核心功能是從一個特定結構的?JSON?輸入文件中提取特定數(shù)據(jù)并寫入到一個新的?JSON?文件中,感興趣的小伙伴可以了解下2026-04-04

