Python如何按指定长度分割列表为子列表并单独存放剩余元素
Python 按指定长度分割列表实现
需求是将给定列表拆分为多个指定长度的子列表,末尾长度不足的剩余元素单独组成一个子列表,示例效果如下:
- 初始列表:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] - 分割规则:每个子列表长度为3
- 期望输出:
[[1,2,3],[4,5,6],[7,8,9],[10,11]]
可直接复用的实现代码
不需要安装任何第三方库,用Python原生语法即可实现:
def split_list(input_list: list, chunk_size: int) -> list[list]: if chunk_size <= 0: raise ValueError("分割后的子列表长度必须是正整数") return [input_list[i:i+chunk_size] for i in range(0, len(input_list), chunk_size)]
测试验证
运行以下测试代码即可复现示例效果:
if __name__ == "__main__": origin_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] res = split_list(origin_list, 3) print(res)
控制台输出:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
补充说明
- 代码核心利用Python列表切片的原生特性:当切片结束索引超出列表实际长度时,不会抛出索引越界错误,会自动截取到列表末尾元素,天然适配最后一段长度不足的场景,不需要额外编写边界判断逻辑,代码简洁高效。
- 该实现生成的子列表为原列表的浅拷贝,如果原列表中存储的是字典、自定义类实例等可变对象,修改子列表内的元素会同步影响原列表对应元素,需要数据完全隔离的场景可以搭配
copy.deepcopy实现深拷贝处理。 - 函数内置了基础参数校验,避免传入非正整数的分割长度导致逻辑异常。
内容的提问来源于stack exchange,提问作者Arshbir Sandhu
相关产品推荐
相关产品推荐

