【问题标题】:How can I print out words from a 2d array into a grid with even spaces?如何将二维数组中的单词打印到具有均匀空格的网格中?
【发布时间】:2020-05-05 14:09:03
【问题描述】:

我正在尝试将不同长度的单词的二维数组打印为网格。

我正在尝试使单词间距均匀。

注意:数组中的单词每次都是随机的。

例子,

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']]

for i in range(5):
    x = arr[i]
    y = "    ".join(x)
    print(f"\t\t{y}",end="\t")
    print("\n\n")

输出:

    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

但是,我希望它看起来更像这样:

   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

我希望每个单词的中心彼此对齐。

我能做些什么来实现这个目标?

谢谢。

【问题讨论】:

    标签: python python-3.x list multidimensional-array


    【解决方案1】:

    您可以先计算整个数组中的最大字长,然后使用:^{width} format specifier 在该可用宽度内将每个字居中:

    width = max(len(word) for line in arr for word in line)
    for line in arr:
        print(' '.join(f'{word:^{width}}' for word in line), end='\n\n')
    

    【讨论】:

    • 或在python 3.6之前:print(' '.join('{:^{}}'.format(word,width) for word in line), end='\n\n')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    相关资源
    最近更新 更多