如何将现有列表拆分为多个子列表(不使用groupby方法)
解决方案
1. 优化列表生成函数
你原来的列表生成函数可以简化,利用Python格式化字符串一次性处理所有数字,无需分两个循环:
def list_maker(): return [f"{i:02d}" for i in range(64)]
f"{i:02d}"会自动将0-9的数字格式化为带前导零的两位字符串(比如00、01),10-63则直接显示为两位数字字符串,完美满足你的需求。
2. 将一维列表拆分为二维列表
用列表推导式就能快速把64元素的一维列表拆分成8个各含8元素的子列表:
# 生成一维列表 one_d_list = list_maker() # 拆分为8×8的二维列表 two_d_grid = [one_d_list[i:i+8] for i in range(0, 64, 8)]
3. 验证访问方式
现在你可以通过[行索引][列索引]的方式访问元素,比如:
# 打印第一行第一列的元素(输出 '00') print(two_d_grid[0][0]) # 打印第八行第八列的元素(输出 '63') print(two_d_grid[7][7])
原理说明
- 列表推导式中的
range(0, 64, 8)会生成起始索引:0、8、16...56,每次取从当前索引到索引+8的切片,正好每个子列表包含8个元素。 - 这种方法是纯Python实现,无需依赖任何第三方库,简洁高效。
内容的提问来源于stack exchange,提问作者Manpreet Singh
相关产品推荐
相关产品推荐

