我正在做一些格式化的表格打印,我想知道我怎么能做这样的事情,我认为这是lambda的情况,但我以前从未使用过它所以我不确定:)
print "{:^{}}|"*(self.size).format(for i in range(self.size),6)
# self size is assumed to be 5 in this example, doesn't work, something along this line is needed though
基本上,这样做(下面)但是更清洁。 PS。我知道下面的例子不起作用,但是你得到了我的漂移
print "{:^{}}" * 5 .format(humangrid[0][0],4,humangrid[0][1],4,humangrid[0][2],4,humangrid[0][3],4,humangrid[0][4],4,
谢谢!
答案 0 :(得分:2)
这是我最好的猜测:
print '|'.join('{:^6}'.format(i) for i in range(self.size))
...
print ''.join('{:^4}'.format(i) for i in humangrid[0])
如果您真的想通过拨打string.format()
print '|'.join(['{:^6}'*self.size]).format(*range(self.size))
...
print ('{:^4}'*len(humangrid[0])).format(*humangrid[0])
答案 1 :(得分:1)
假设您正试图以中心表格方式创建一个名单列表,这是一种方法:
humangrid = [
["john", "jacob", "jezebel"],
["mary", "maria", "mel"],
["shareen", "sean", "shiva"],
]
cell_width = max(len(y) for x in humangrid for y in x) # get length of longest name
cell_width += 2 # optional padding
for row in humangrid:
print "|".join(name.center(cell_width) for name in row)
运行它会给你:
john | jacob | jezebel
mary | maria | mel
shareen | sean | shiva
要更改表格的对齐方式,只需将center()
替换为ljust()
或rjust()
。
可以很容易地替换它来使用.format()
,但我发现这种方法更具可读性。
答案 2 :(得分:0)
这应该是你的意思
print(("{:4}|"*len(humangrid[0])).format(*humangrid[0]))
这个想法只是使用format(*xxx)
来调用具有可变数量参数的格式。