You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何在控制台中垂直对齐打印两个列表?

Python实现类似C++ setwidth()的列表元素对齐打印

要实现列表元素垂直对齐打印,核心是给每个元素设置统一的显示宽度,Python的格式化字符串可以直接实现类似C++ setwidth()的效果,具体操作如下:

方法一:自动适配最大元素宽度

先计算所有元素转为字符串后的最长长度,确保所有元素都能按这个宽度对齐,兼容性更强:

arr = [100, -23, -23, 404, 100, 23, 23, 23, 3, 404]
mem = [0, 10, 10, 10, 1, 10, 10, 10, 10, 10]

# 计算所有元素的最大显示宽度
all_elements = arr + mem
max_width = max(len(str(num)) for num in all_elements)

# 格式化单个列表为对齐的字符串
def format_aligned_list(lst, name, width):
    formatted_items = [f"{num:>{width}}" for num in lst]
    return f"{name} = [{', '.join(formatted_items)}]"

# 打印结果
print(format_aligned_list(arr, "arr", max_width))
print(format_aligned_list(mem, "mem", max_width))

方法二:指定固定宽度

如果提前知道元素的最大长度,直接指定宽度更高效:

arr = [100, -23, -23, 404, 100, 23, 23, 23, 3, 404]
mem = [0, 10, 10, 10, 1, 10, 10, 10, 10, 10]

# 指定固定宽度为3(匹配示例中最长元素的长度)
width = 3

# 格式化并打印
formatted_arr = [f"{x:>{width}}" for x in arr]
formatted_mem = [f"{x:>{width}}" for x in mem]

print(f"arr = [{', '.join(formatted_arr)}]")
print(f"mem = [{', '.join(formatted_mem)}]")

效果说明

两种方法运行后都会输出对齐的结果:

arr = [100, -23, -23, 404, 100, 23, 23, 23,  3, 404]
mem = [  0,  10,  10,  10,   1, 10, 10, 10, 10,  10]

其中f"{num:>{width}}"是核心:

  • >表示右对齐(如果需要左对齐用<,居中用^)
  • width就是元素的显示宽度,不足的部分会自动补空格,和C++ setwidth()的作用完全一致。

内容的提问来源于stack exchange,提问作者W.Nathaniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 10:10:56