我有一张花车清单。如果我只是print
它,它会显示如下:
[9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]
我可以使用print "%.2f"
,这将需要一个for
循环来遍历列表,但这样对于更复杂的数据结构就不起作用了。
我想要一些类似的东西(我完全是编造的)
>>> import print_options
>>> print_options.set_float_precision(2)
>>> print [9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]
[9.0, 0.05, 0.03, 0.01, 0.06, 0.08]
这是个老问题,但我想补充一些可能有用的东西:
我知道您是在原始的Python列表中编写示例的,但是如果您决定使用
numpy
数组(这在您的示例中是完全合法的,因为您似乎正在处理数字数组),那么(几乎完全正确地)有一个您说您编写的命令:如果您仍然希望看到真正精确的数字的所有小数,但要去掉尾随的零(例如,使用格式化字符串
%g
),则情况会更好:要只打印一次而不更改全局行为,请使用与上述参数相同的
np.array2string
。一个更持久的解决方案是子类
float
:子类化
float
的问题是,它破坏了显式查找变量类型的代码。但据我所知,这是唯一的问题。一个简单的x = map(float, x)
撤销到prettyfloat
的转换。可悲的是,你不能只是猴子补丁,因为
float.__repr__
是不可变的。如果不想对
float
进行子类划分,但不介意定义函数,map(f, x)
比[f(n) for n in x]
简洁得多正如noone所添加的,应该注意的是,从Python 2.6+开始,推荐的方法是使用^{} ,为Python 3+做好准备。
The newstring formating syntax不难使用,但功能相当强大。
我想那可能是^{} 可能有什么东西,但我什么也没找到。
相关问题 更多 >
编程相关推荐