Python中二维列表按指定跨子列表格式展平输出求助
问题
我有一个二维列表:
m = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]]
希望得到如下格式的输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
我尝试了如下循环代码:
for i in range(3): for k in range(i,len(m),3): print(*m[i][k:k+3],sep='\t')
但输出结果为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
并且出现错误,不确定这种跨子列表的输出是否可行,请求帮助解决。
解决方案
核心问题是直接操作二维列表的子列表无法处理跨子列表的元素拼接。正确思路是先把二维列表扁平化为一维列表,再按每3个元素一组输出:
步骤1:扁平化二维列表
将所有子列表的元素合并成连续的一维列表,两种实现方式:
# 常规循环写法 flat = [] for sublist in m: flat.extend(sublist) # 简洁列表推导式写法 flat = [num for sublist in m for num in sublist]
步骤2:按3个元素分组输出
遍历扁平化后的列表,每3个元素打印一行,自动处理最后一组不足3个的元素:
for i in range(0, len(flat), 3): print(' '.join(map(str, flat[i:i+3])))
完整代码
m = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]] flat = [num for sublist in m for num in sublist] for i in range(0, len(flat), 3): print(' '.join(map(str, flat[i:i+3])))
最终输出
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
内容的提问来源于stack exchange,提问作者XeLa
相关产品推荐
相关产品推荐

