作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
将列表分成大致等份的最佳方法是什么?例如,如果列表有 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/
我是一名优秀的程序员,十分优秀!