如何不使用numpy.array_split实现Python列表按规则等分切分
实现方案
直接用Python原生列表切片+列表推导式即可实现,不需要依赖任何第三方库:
def split_list(lst, chunk_size): # lst: 待切分的原列表 # chunk_size: 每个分组的元素数量 return [lst[i:i+chunk_size] for i in range(0, len(lst), chunk_size)]
测试验证
# 测试示例场景 original_list = [8, 3, 4, 1, 5, 9, 6, 7, 2] print(split_list(original_list, 3)) # 输出:[[8, 3, 4], [1, 5, 9], [6, 7, 2]] # 测试4元素分2组每组2个 print(split_list([1,2,3,4], 2)) # 输出:[[1, 2], [3, 4]] # 测试16元素分4组每组4个 list_16 = list(range(1, 17)) print(split_list(list_16, 4)) # 输出:[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]
补充说明
如果列表总长度不是chunk_size的整数倍,最后一个分组会自动保留剩余的元素,比如长度为7的列表分3个一组,会返回[[1,2,3], [4,5,6], [7]]。如果不需要不完整的分组,可以修改函数过滤掉长度不足的分组:
def split_list_strict(lst, chunk_size): return [lst[i:i+chunk_size] for i in range(0, len(lst), chunk_size) if len(lst[i:i+chunk_size]) == chunk_size]
内容的提问来源于stack exchange,提问作者user17253648
相关产品推荐
相关产品推荐

