相关疑难解决方法(0)

如何将列表拆分为大小均匀的块?

我有一个任意长度的列表,我需要将它分成相同大小的块并对其进行操作.有一些明显的方法可以做到这一点,比如保留一个计数器和两个列表,当第二个列表填满时,将它添加到第一个列表并清空下一轮数据的第二个列表,但这可能非常昂贵.

我想知道是否有人对任何长度的列表都有一个很好的解决方案,例如使用生成器.

我一直在寻找有用的东西,itertools但我找不到任何明显有用的东西.但是可能会错过它.

相关问题:在块中迭代列表的最"pythonic"方法是什么?

python split list chunks

2068
推荐指数
40
解决办法
84万
查看次数

将列表拆分为平衡长度的部分

我需要一个给出列表L和数字的算法N,返回一个N较小的列表列表,其中子列表是"平衡的".例子:

algo(range(1, 8), 3)  -> [[1,2,3], [4,5], [6,7]]
algo(range(1, 6), 4)  -> [[1,2], [3], [4], [5]]
algo(range(1, 12), 5) -> [[1,2,3], [4,5], [6,7], [8,9], [10, 11]]
Run Code Online (Sandbox Code Playgroud)

如您所见,算法应该"更喜欢"输出中的第一个列表.

我已经尝试了几个小时,但我无法找到一个很好的简洁算法.顺便说一句,这将在Python中实现,但它确实是我在此之后的算法.这不是家庭作业,这是一个网站,它将在三列(Django)的列表中显示内容.


我从freenode上的#python得到了最好的答案,如下:

def split_up(l, n):
    q, r = divmod(len(l), n)
    def division_point(i):
        return i * q + min(i, r)
    return [l[division_point(i):division_point(i+1)] for i in range(n)]
Run Code Online (Sandbox Code Playgroud)

不要问我为什么它有效.:)虽然我会给出最多票数的人给出正确答案.

python algorithm

7
推荐指数
1
解决办法
768
查看次数

标签 统计

python ×2

algorithm ×1

chunks ×1

list ×1

split ×1