问:
如何将任意长度的列表拆分为大小相等的块?
答:
简单的实现,对于 Python3:
def chunks(lst, n):
n = max(1, n)
return [lst[i:i+n] for i in range(0, len(lst), n)]
测试截图如下:
对于 Python2,改用如下代码:
def chunks(lst, n):
n = max(1, n)
return [lst[i:i+n] for i in xrange(0, len(lst), n)]
还可使用 itertools 模块的 islice 方法来实现所需功能:
from itertools import islice
def batched(iterable, n):
"Batch data into lists of length n. The last batch may be shorter."
# batched('ABCDEFG', 3) --> ABC DEF G
it = iter(iterable)
while True:
batch = list(islice(it, n))
if not batch:
return
yield batch
将数据分批放到到长度为 n 的列表中,最后一批可能更短。
测试截图如下:
另外,可以使用第三方库 numpy 中的拆分数组方法 array_split:
将数组拆分为多个子数组
import numpy as np
lst = range(33)
np.array_split(lst, 8)
参考:
相关阅读: