Python如何按指定步长循环切分列表?
列表固定步长切分实现方案
1. 最简写法(适合普通长度列表)
直接通过Python原生切片+range步长特性实现,代码简洁易读:
list_a = [1,2,3,4,5,6,7,8,9,10,11] step = 5 # 切分逻辑 chunks = [list_a[i:i+step] for i in range(0, len(list_a), step)] # 打印结果 for chunk in chunks: print(f"print -> {chunk}")
原理说明:
range(0, len(list_a), step)会生成0、5、10三个起始索引,正好匹配三个切片的起始位置- Python列表切片超出列表总长度时不会抛出异常,会自动截取到列表末尾,完美适配最后一段不足步长的场景
2. 内存优化写法(适合超大长度列表)
如果处理的列表长度极大,不需要一次性生成所有切分块占用内存,可以换成生成器表达式,迭代时才生成对应块:
chunks = (list_a[i:i+step] for i in range(0, len(list_a), step)) for chunk in chunks: print(f"print -> {chunk}")
两种写法的运行输出完全符合预期:
print -> [1, 2, 3, 4, 5] print -> [6, 7, 8, 9, 10] print -> [11]
内容的提问来源于stack exchange,提问作者Denis
相关产品推荐
相关产品推荐

