将列表分成 大致 相等的部分的最佳方法是什么?例如,如果列表有 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 个块,而不是 3 个块。我可以简单地转置(迭代它并获取每列的第一个元素,调用该部分,然后获取第二个并将其放入第二部分,等等),但这会破坏项目的顺序。
原文由 user248237 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于舍入错误,此代码已损坏。不要使用它!!!
这是一个可行的方法:
测试: