Python-将列表分成大约相等长度的N个部分

将列表分为大致相等的最佳方法是什么?例如,如果列表有7个元素并将其分为2部分,则我们要在一部分中获得3个元素,而另一部分应具有4个元素。

我正在寻找类似的东西even_split(L, n),打破Ln部分。

def chunks(L, n):

""" Yield successive n-sized chunks from L.

"""

for i in xrange(0, len(L), n):

yield L[i:i+n]

上面的代码给出了3个块,而不是3个块。我可以简单地进行转置(对此进行迭代,并取每列的第一个元素,将其称为第一部分,然后取其第二,然后将其置于第二部分,依此类推),但这样会破坏项目的顺序。

回答:

这是一个可行的方法:

def chunkIt(seq, num):

avg = len(seq) / float(num)

out = []

last = 0.0

while last < len(seq):

out.append(seq[int(last):int(last + avg)])

last += avg

return out

测试:

>>> chunkIt(range(10), 3)

[[0, 1, 2], [3, 4, 5], [6, 7, 8, 9]]

>>> chunkIt(range(11), 3)

[[0, 1, 2], [3, 4, 5, 6], [7, 8, 9, 10]]

>>> chunkIt(range(12), 3)

[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]]

以上是 Python-将列表分成大约相等长度的N个部分 的全部内容, 来源链接: utcz.com/qa/428704.html

回到顶部