如何在python中很好地打印双打列表?

时间:2014-04-06 11:49:22

标签: python printing format

到目前为止,我已经:

x=[0.0, 1.2135854798749774, 1.0069824713281044, 0.5141246736157659, -0.3396344921640888, -0.33926090064512615, 0.4877599543804152, 0.0]

print ' '.join(["%.2f" % s for s in x])

产生:

0.00 1.21 1.01 0.51 -0.34 -0.34 0.49 0.00

问题是-0.34是一个长于0.51的字符,在打印多个列表时会产生参差不齐的左边缘。

有更好的想法吗?

我想:

0.00 1.21 1.01 0.51 -0.34 -0.34 0.49 0.00
0.00 1.21 1.01 0.51 0.34 0.34 0.49 0.00
0.00 1.21 -1.01 -0.51 -0.34 -0.34 -0.49 0.00

变成:

0.00 1.21  1.01  0.51 -0.34 -0.34  0.49 0.00
0.00 1.21  1.01  0.51  0.34  0.34  0.49 0.00
0.00 1.21 -1.01 -0.51 -0.34 -0.34 -0.49 0.00

如果有一些内置或标准的库方式可以做得更好,因为print ' '.join(["%.2f" % s for s in x])需要输入很多。

4 个答案:

答案 0 :(得分:2)

只需相应地调整正数和负数的填充:

''.join(["  %.2f" % s if s >= 0 else " %.2f" % s for s in x]).lstrip()

答案 1 :(得分:1)

使用rjustljust

x=[0.0, 1.2135854798749774, 1.0069824713281044, 0.5141246736157659, -0.3396344921640888, -0.33926090064512615, 0.4877599543804152, 0.0]

print ' '.join([("%.2f"%s).ljust(5) for s in x])

答案 2 :(得分:1)

试试这个:print ' '.join(["%5.2f" % s for s in x]),字符串中的数字5"%5.2f"指定最大字段宽度。它与C中的转换规范兼容。

答案 3 :(得分:0)

你试过"% .2f"(注意:空格)? - J.F. Sebastian