到目前为止,我已经:
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])
需要输入很多。
答案 0 :(得分:2)
只需相应地调整正数和负数的填充:
''.join([" %.2f" % s if s >= 0 else " %.2f" % s for s in x]).lstrip()
答案 1 :(得分:1)
使用rjust
或ljust
:
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