如何在Python中实现两个列表并排打印的完美对齐?
实现两个列表的对齐并排打印
要实现你想要的对齐效果,核心是利用字符串格式化来控制每一行的宽度,确保左侧内容占据固定宽度后,右侧内容能整齐排列。下面是具体的实现代码,完全不需要表格类模块:
list1 = [(15, 'dog'), (10, 'leopard'), (5, 'bird')] list2 = [(20, 'table'), (23, 'PC'), (13, 'TV')] # 第一步:把每个元组转换成目标格式的字符串 left_lines = [f"{name} Freq --> {freq}" for freq, name in list1] right_lines = [f"{name} Freq --> {freq}" for freq, name in list2] # 第二步:计算左侧内容的最大宽度(包含表头"List1:"的长度) max_left_width = max(len("List1:"), max(len(line) for line in left_lines)) # 第三步:打印表头 print(f"List1:{' '*(max_left_width - len('List1:'))} List2:") # 第四步:逐行打印对齐的内容 for left, right in zip(left_lines, right_lines): # 把左侧内容填充到最大宽度,然后添加分隔空格,再拼接右侧内容 print(f"{left.ljust(max_left_width)} {right}")
代码细节说明:
ljust(max_left_width):将左侧字符串向左对齐,并自动填充空格到指定的max_left_width长度,确保每一行左侧都占据相同宽度,从根源避免排版混乱。- 计算
max_left_width时包含表头长度,是为了让表头的"List1:"和下方的内容右边缘对齐,保证整体排版的一致性。 - 如果两个列表长度不一致,可以用
itertools.zip_longest来处理缺失的行,比如给空行填充占位符(比如"-"),避免出现截断问题。
运行这段代码后,就能得到你想要的完美对齐效果:
List1: List2: dog Freq --> 15 table Freq --> 20 leopard Freq --> 10 PC Freq --> 23 bird Freq --> 5 TV Freq --> 13
内容的提问来源于stack exchange,提问作者Giacomo Cerretini
相关产品推荐
相关产品推荐

