Common Lisp实现嵌套列表的对齐表格打印方案求助
实现嵌套列表转对齐表格的解决方案
核心思路
先计算每列的最大宽度,再基于这个宽度对每个元素做对齐格式化,就能实现规整的表格打印。
代码示例
假设你的嵌套列表是二维结构(每行对应表格的一行,每个子元素对应列内容):
# 示例嵌套列表数据 data = [ ["姓名", "年龄", "所在城市"], ["张三", "25", "北京"], ["李四", "30", "上海市浦东新区"], ["王五", "28", "广州"] ] # 计算每列的最大宽度(遍历每列所有元素,取最长长度) col_widths = [max(len(str(item)) for item in column) for column in zip(*data)] # 打印表头 print(" | ".join(f"{content:<{col_widths[i]}}" for i, content in enumerate(data[0]))) # 打印分隔线 print("-+-".join("-" * width for width in col_widths)) # 打印每一行内容 for row in data[1:]: print(" | ".join(f"{content:<{col_widths[i]}}" for i, content in enumerate(row)))
效果说明
- 用
<实现左对齐,换成>可以实现右对齐,按需调整 - 不管元素长度差异多大,每列都会自动适配最长元素的宽度,保证对齐
- 分隔线也会和列宽匹配,整体表格更美观
内容的提问来源于stack exchange,提问作者ponipei
相关产品推荐
相关产品推荐

