使用 python 将格式化的元素列表制作成列:

making a formatted list of elements into columns using python:

这个是按行显示元素,我希望它们并排显示。

def collect_split(list, message = None, message2 = None, message3 = None, message4 = None, message5 = None):
    ll = [message, message2, message3, message4, message5]
    print("{0} {1} {2} {3} {4}".format(ll[0] if ll[0] != None else "",ll[1] if ll[1] != None else "",ll[2] if ll[2] != None else "",ll[3] if ll[3] != None else "" , ll[4] if ll[4] != None else "", sep = " "))

列表 (ll) 中的内容: [' 32\n+ 698\n-----\n 730\n', ' 1\n- 3801\n------\n -3800\n', ' 45\n+ 43\n----\n 88\n', '123\n+ 49\n-----\n 172\n', ' 143\n+ 55\n-----\n 198\n']

结果:

   32
+ 698
-----
  730
      1
- 3801
------
 -3800
   45
+ 43
----
  88
   123
+  49
-----
  172
   143
+  55
-----
  198

这是一个有效的方法:

ll = [' 32\n+ 698\n-----\n 730\n', 
      ' 1\n- 3801\n------\n -3800\n', 
      ' 45\n+ 43\n----\n 88\n', 
      ' 123\n+ 49\n-----\n 172\n', 
      ' 143\n+ 55\n-----\n 198\n']
mes_len = 6
space_len = 10

f_str = '{0:>%d}'%mes_len
space = ' '*space_len
output = []
for line in zip(*[l.split('\n') for l in ll]):
    output.append(space.join([f_str.format(s) for s in line]))

print('\n'.join(output))

或者,如果您对使用一行难以阅读的长代码的解决方案特别感兴趣(正如您的问题似乎表明的那样),则有等效的

ll = [' 32\n+ 698\n-----\n 730\n', ' 1\n- 3801\n------\n -3800\n', ' 45\n+ 43\n----\n 88\n',' 123\n+ 49\n-----\n 172\n',' 143\n+ 55\n-----\n 198\n'] 
print('\n'.join([''.join(['{0:>8}'.format(s) for s in line]) for line in zip(*[l.split('\n') for l in ll])]))

结果输出:

    32               1              45             123             143
 + 698          - 3801            + 43            + 49            + 55
 -----          ------            ----           -----           -----
   730           -3800              88             172             198
                                                                      

为了更统一的外观,使底部的 ------ 行具有相同的长度。