使用 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
为了更统一的外观,使底部的 ------
行具有相同的长度。
这个是按行显示元素,我希望它们并排显示。
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
为了更统一的外观,使底部的 ------
行具有相同的长度。