您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

这是您的分页方式,还是有更好的算法?

这是您的分页方式,还是有更好的算法?

如果您知道自己有可分割的序列(列表或元组),

def getrows_byslice(seq, rowlen):
    for start in xrange(0, len(seq), rowlen):
        yield seq[start:start+rowlen]

当然,这是一个生成器,因此,如果您绝对需要列表作为结果,则可以使用list(getrows_byslice(seq, 3))或类似的东西。

如果您开始使用的是通用的迭代器,则itertools配方可提供有关grouper配方的帮助…:

import itertools

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return itertools.izip_longest(fillvalue=fillvalue, *args)

(同样,list如果列表是您想要的,则需要再次调用它)。

由于您实际上希望最后一个元组被截断而不是被填充,因此您需要从最后一个元组“修剪”尾随的填充值。

其他 2022/1/1 18:34:11 有466人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶