Python-将列表分成大约相等长度的N个部分
将列表分为大致相等的最佳方法是什么?例如,如果列表有7个元素并将其分为2部分,则我们要在一部分中获得3个元素,而另一部分应具有4个元素。
我正在寻找类似的东西even_split(L, n)
,打破L
成n
部分。
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