gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:33:12 26 4
gpt4 key购买 nike

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

我正在寻找像 even_split(L, n) 这样将 L 分解为 n 部分的东西。

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 个 block ,而不是 3 个 block 。我可以简单地转置(遍历它并获取每列的第一个元素,调用该部分,然后获取第二个并将其放入第二部分,等等),但这会破坏项目的顺序。

最佳答案

你可以把它写成一个列表生成器:

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))

例子:

>>> list(split(range(11), 3))
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10]]

关于python - 将列表拆分为长度大致相等的 N 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2130016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com