python - 如何使用给定列表创建分页函数

标签 python python-3.x list while-loop pagination

我必须创建一个分页函数,要求提供 2 个参数:一个数组和一个 page_number。

我试图解决列表中的任何项目,但我遇到了一些问题。

这是我的代码:

def paginator(array,page_number):
    if 0 < page_number < len(array):
        obj_per_page = len(array)//page_number
        objects = len(array)
        count = 0
        start = 0
        while objects > 1:
            count += 1
            objects -= len(array)//page_number
            object_available = array[start:obj_per_page]
            print(f'this is page {count} have object {object_available}')
            start = obj_per_page 
            obj_per_page += len(array)//page_number
    
    elif len(array) <= page_number:
        for i in array:
            print(f'thi is page {i} have object [{i}]')
 
    else:
        print(array)
 
 
list = [1,2,3,4,5,6]
page_number = 3
 
paginator(list,page_number)

输出

this is page 1 have object [1, 2]
this is page 2 have object [3, 4]
this is page 3 have object [5, 6]

`此代码仅在以下情况下提供预期输出

如果 len(list) 能被 page_number 整除 如果 page_number 为 0 或 1 如果 page_number 大于并等于 len(list)`

错误

假设 len(list) 为 9,page_number 为 (2,4,5,6,7,8) 9 % (2,4,5,6,7,8) 的余数是 (1,1,4,3,2,1) ,因此缺少的项目数等于余数

我想要什么

如果 len(list) 是 9 并且 page_number 是 4 并且我想要输出类似的内容

this is page 1 have object [1, 2, 3]
this is page 2 have object [4, 5]
this is page 3 have object [6, 7]
this is page 4 have object [8, 9]

如果你们有其他解决方案请帮助我分享 我尝试解释我的问题,抱歉语法不好

最佳答案

def paginator(array, page_number):
    n, remainder = page_number, len(array) % page_number
    curr, idx, old_idx = 1, 0, 0
    while n + remainder != 0:
        idx += len(array) // page_number + bool(remainder)
        print(f"this is page {curr} have object {array[old_idx:idx]}")
        n -= 1
        remainder = max(remainder - 1, 0)
        curr += 1
        old_idx = idx


lst = list(range(1, 10))
page_number = 4

paginator(lst, page_number)

打印:

this is page 1 have object [1, 2, 3]
this is page 2 have object [4, 5]
this is page 3 have object [6, 7]
this is page 4 have object [8, 9]

关于python - 如何使用给定列表创建分页函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67254840/

相关文章:

python - 如何在 Python 中舍入十六进制值

Python soundfile 音频客户端通过套接字连接到 Matlab 服务器

python - 从文件中读取并删除\n和空格

python - selenium webdriver BrokenPipeError(超时问题)

python - 在 python 中转换列表的优雅且廉价的方法

python - 如何正确地将元组列表写入 .txt 文件?

python - 在 Python basemap 上重绘绘图

python - Python 中的 for 循环问题中的 Tkinter 按钮

Python:如何在三个列表中找到共同的值

r - 查找字符串向量的所有唯一组合的幂集