如果我有一个列表,如([1,2,3,4,5],[2,4,6,8,10],[3,6,9,12,15]) 如何以网格格式在屏幕上打印?就像:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
我的代码就像
def print_table(listx):
"""returns a grid of a list of lists of numbers
list of list -> grid"""
for lists in listx:
for i in lists:
print(i,end='\t')
但我不知道如何将每个列表放在一行中,如上例所示。
答案 0 :(得分:1)
也许只需在主要内容上添加空白字体:
def print_table(listx):
"""returns a grid of a list of lists of numbers
list of list -> grid"""
for lists in listx:
for i in lists:
print(i,end='\t')
print()
答案 1 :(得分:0)
如果元素的宽度变化超过制表符宽度,则可以使用固定宽度列(用空格填充):
>>> for x in listx:
... for y in x:
... print('{0:<10}'.format(y), end='')
... print()
...
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
答案 2 :(得分:0)
我的解决方案创建了一个字符串,其中包含行和\n
中以空格分隔的数字 - 分隔的行。它使用str.center方法和生成器表达式。
str.center(width[, fillchar])
以长度宽度的字符串为中心返回。使用指定的fillchar完成填充(默认为ASCII空间)。原本的 如果width小于或等于len(s),则返回string。
def as_string(seq_of_rows):
return '\n'.join(''.join(str(i).center(5) for i in row) for row in seq_of_rows)
l = ([1,2,3,4,5],[2,4,6,8,10],[3,6,9,12,15])
print as_string(l)
输出:
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
让我们分手吧:
str(i).center(5) for i in row
迭代行,将值转换为字符串并调用center
方法。结果是空格填充值。
''.join(sequence_above)
它从值创建单个字符串。所以现在,string包含整行。
'\n'.join(processed_row row in seq_of_rows)
它从前一步骤获取已处理的行(字符串)并使用换行符连接它们,因此结果为row1\nron2\nrow3
。