将列表拆分为长度大致相等的 N 个部分

2023-12-24

将列表划分为的最佳方式是什么roughly等份?例如,如果列表有 7 个元素,并将其分为 2 部分,我们希望在一部分中获取 3 个元素,而另一部分应该有 4 个元素。

我正在寻找类似的东西even_split(L, n)那打破了L into n parts.

def chunks(L, n):
    """ Yield successive n-sized chunks from L.
    """
    for i in range(0, len(L), n):
        yield L[i:i+n]

上面的代码给出了 3 个块,而不是 3 个块。我可以简单地转置(迭代它并获取每列的第一个元素,将该元素称为第一部分,然后获取第二个元素并将其放入第二部分,等等),但这会破坏项目的顺序。


您可以将其相当简单地编写为列表生成器:

def split(a, n):
    k, m = divmod(len(a), n)
    return (a[i*k+min(i, m):(i+1)*k+min(i+1, m)] for i in range(n))

Example:

>>> list(split(range(11), 3))
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10]]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将列表拆分为长度大致相等的 N 个部分 的相关文章

随机推荐