Python 如何根据参数的值设置格式说明符的条件?

Python 如何根据参数的值设置格式说明符的条件?,python,python-3.x,number-formatting,Python,Python 3.x,Number Formatting,如果值大于0.001,我想将其输出为{:f},否则输出为{:e}(指数) 我想知道我是否可以在一个字符串格式行内完成这项工作,这不是在实际打印的行上进行调节,而是在它的内部。允许使用lambda表达式吗?(旁注:他们在哪里被允许,真的吗?) FTR,这是我的输出字符串: print("{:f}".format(my_float)) 我想我应该使用“{:g}”。这将在指数表示法和正常浮点表示法之间来回切换,具体取决于值: >>> '{:g}'.format(0.001) '0.

如果值大于0.001,我想将其输出为{:f},否则输出为{:e}(指数)

我想知道我是否可以在一个字符串格式行内完成这项工作,这不是在实际打印的行上进行调节,而是在它的内部。允许使用lambda表达式吗?(旁注:他们在哪里被允许,真的吗?)

FTR,这是我的输出字符串:

print("{:f}".format(my_float))
我想我应该使用
“{:g}”
。这将在指数表示法和正常浮点表示法之间来回切换,具体取决于值:

>>> '{:g}'.format(0.001)
'0.001'
>>> '{:g}'.format(0.0000001)
'1e-07'
与总是指数型的“{:e}”相反

>>> '{:e}'.format(0.001)
'1.000000e-03'

我认为将条件添加到格式中是一种方式

>>> x = 0.0001276
>>> '{:{type}}'.format(x, type='f' if x>0.001 else 'e')
'1.276000e-04'
>>> x = 0.01
>>> '{:{type}}'.format(x, type='f' if x>0.001 else 'e')
'0.010000'
在我看来,这比兰姆达好

为了消除if-else,您可以使用and或or操作

(x>0.01 and 'f') or 'e'

注意结尾处的
你可以做一些类似的事情:
打印(“{:f}”如果my_float>0.001或者“{:e}”).format(my_float))
,但这看起来有点尴尬!