You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将二维数组内不等长单词打印为居中对齐的等距网格?

实现不等长单词二维数组的居中对齐网格打印

要实现这种每列单词居中、间距均匀的网格效果,关键是先确定每一列的最大单词长度,然后让每个单词按照对应列的长度居中对齐。下面是具体的解决方案:

步骤说明

  1. 计算每列的最大宽度:通过转置二维数组(把列转换成行),遍历每一列的所有单词,找出最长单词的长度,作为该列的标准宽度。
  2. 格式化每行单词:对每行的每个单词,使用字符串的center()方法,按照对应列的宽度进行居中处理(方法会自动在单词两侧填充空格,保证总长度等于列宽)。
  3. 拼接并打印:把格式化后的单词拼接成一行,输出即可得到整齐的网格。

完整代码

arr = [ ['eighteen', 'twenty-two', 'twenty-one', 'ten', 'twenty-three'], 
        ['eleven', 'thirteen', 'four', 'three', 'twenty'], 
        ['twenty-eight', 'six', 'fourteen', 'seventeen', 'twenty-seven'], 
        ['twenty-four', 'two', 'nine', 'one', 'five'], 
        ['sixteen', 'fifteen', 'twelve', 'twenty-nine', 'seven']]

# 计算每一列的最大宽度:转置数组后遍历每一列(转置后的行)
col_widths = [max(len(word) for word in col) for col in zip(*arr)]

# 遍历每一行,格式化并打印
for row in arr:
    # 对每个单词按对应列的宽度居中对齐
    formatted_items = [word.center(width) for word, width in zip(row, col_widths)]
    # 拼接成一行输出(如果想增加列间距,可把' '换成'  '或更多空格)
    print(' '.join(formatted_items))

输出效果

eighteen        twenty-two        twenty-one           ten        twenty-three  
        eleven          thirteen            four          three             twenty      
    twenty-eight            six          fourteen        seventeen        twenty-seven  
     twenty-four            two             nine            one              five       
        sixteen          fifteen           twelve        twenty-nine           seven      

额外调整

如果希望列之间的间距更大,只需要修改join的分隔符即可,比如用' '.join(formatted_items),这样列与列之间会有两个空格的空隙,视觉上更宽松。

内容的提问来源于stack exchange,提问作者William Bentley

火山引擎 最新活动