Python实现嵌套列表转特定排列:多行列标题转可打印矩阵
实现多行列标题到目标矩阵的转换
可以用列表推导式+zip函数的组合简洁实现这个转换,核心思路是先统一每个子标题的长度,再通过转置得到目标结构:
步骤说明
- 预处理每个列标题:
- 长度为1的子列表(单行标题):在头部补空字符串,变成
["", 原元素],对应目标矩阵的第一行空、第二行有值 - 长度为2的子列表(多行标题):保持原顺序,对应目标矩阵的第一行取第一个元素、第二行取第二个元素
- 长度为1的子列表(单行标题):在头部补空字符串,变成
- 用
zip(*预处理列表)对预处理后的二维列表进行转置,得到的就是目标矩阵的结构
代码实现
# 输入的列标题嵌套列表 input_titles = [["a0"], ["b0", "b1"], ["c0", "c1"], ["d0", "d1"], ["e0"], ["f0"], ["g0"]] # 预处理每个子标题,统一长度为2 processed = [["", s[0]] if len(s) == 1 else s for s in input_titles] # 转置得到目标矩阵 result = [list(row) for row in zip(*processed)] print(result) # 输出: # [['', 'b0', 'c0', 'd0', '', '', ''], ['a0', 'b1', 'c1', 'd1', 'e0', 'f0', 'g0']]
方法优势
- 预处理步骤让所有列的标题都对应到两行的位置,确保转置时行列完全对齐
zip(*processed)自动将每个列的第1个、第2个元素分别聚合,刚好匹配目标矩阵的两行结构,代码简洁且可读性强
内容的提问来源于stack exchange,提问作者user1266174
相关产品推荐
相关产品推荐

