这一行显示元素,我希望它们并排列。
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-----\\n172\n','143\n+55\n-----\\n 198\n']
结果:
32
+ 698
-----
730
1
- 3801
------
-3800
45
+ 43
----
88
123
+ 49
-----
172
143
+ 55
-----
198
这里有一个有效的方法:
ll = [' 32n+ 698n-----n 730n',
' 1n- 3801n------n -3800n',
' 45n+ 43n----n 88n',
' 123n+ 49n-----n 172n',
' 143n+ 55n-----n 198n']
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 = [' 32n+ 698n-----n 730n', ' 1n- 3801n------n -3800n', ' 45n+ 43n----n 88n',' 123n+ 49n-----n 172n',' 143n+ 55n-----n 198n']
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
为了获得更均匀的外观,请使底部的------
行具有相同的长度。