我正在用python创建分页系统。我有一个给定的页面范围[1。。。n] 并希望从中精确提取m个数字,包括当前页码。如果可能,当前页码必须在中间。有什么优雅的方法吗?你知道吗
我知道这可以用很少的if…else语句来完成,但是这看起来非常笨拙。你知道吗
def generate_short_page_range(current_page, page_range, shown_pages_number):
pages_on_one_side = int((shown_pages_number - 1) / 2)
short_page_range = range(current_page - pages_on_one_side, current_page + pages_on_one_side + 1)
# creating common part of page ranges
short_page_range = [item for item in short_page_range if item in page_range]
return short_page_range
对于数据:当前页面=1,页面范围大小=7,显示页面数=7,我想返回[1,2,3,4,5,6,7],现在它返回[1,2,3,4]
编辑: 假设我有一个20页的列表,它给出了如下的页面范围:[1,2。。。19, 20]. 我想限制分页器的大小,例如5页,所以当我们在第12页时,它会显示[10,11,12,13,14]。但是我也希望它总是显示正好5页,所以当当前页面左边只有一页时,我希望它在右边显示另外一页。所以当我们在第2页时,我想返回[1,2,3,4,5],而不是从当前函数得到的[1,2,3,4]。与第一页相同,我希望返回[1,2,3,4,5],而不是[1,2,3]
我的解决方案也使用if-else,我认为这是最直接的方法:
运行一个简单的测试:
输出:
相关问题 更多 >
编程相关推荐