格式对于看似相同的列表具有不同的行为

鲁弗斯

我有以下python命令:

>>> list([0, 1])
[0, 1]
>>> list(myobject)
[0, 1]
>>> print(['{:.2f}'.format(val) for val in list([0, 1])])
['0.00', '1.00']
>>> print(['{:.2f}'.format(val) for val in list(myobject)])
TypeError: non-empty format string passed to object.__format__

为什么是它虽然双方list([0, 1])list(myobject)返回相同的列表[0, 1],在格式化一个作品,而在格式化其他不?

如果有帮助,则myobject问题是sympy.geometry.Point

马丁·彼得斯(Martijn Pieters)

仅仅因为列表中的值相同的方式打印并不意味着它们可以以相同的方式设置格式。sympy.geometry.Point包含sympy.core.number.*对象,而不是Python数字:

>>> from sympy import Point3D
>>> myobject = Point3D(1, 2, 2)
>>> type(myobject.x)
<class 'sympy.core.numbers.One'>

这将起作用:

>>> print(['{!r}.00'.format(val) for val in myobject])

因为然后您将首先应用repr()每个值myobject以下内容也将起作用,但是随后将对任意对象应用标准格式:

>>> print(['{}.00'.format(val) for val in myobject])

(我list()在两个示例中都删除了该调用,因为在这里是多余的)。

由产生的值myobject可能有一个自定义__repr__方法,该方法以字符串数字形式返回该值。他们缺少的是一个自定义__format__方法,object.__format__然后继承的默认值拒绝接受格式设置参数。

要将对象实际格式化为浮点型,请先将其转换:

print(['{:.2f}'.format(float(val)) for val in myobject])

演示:

>>> print(['{!r}.00'.format(val) for val in myobject])
['1.00', '2.00', '2.00']
>>> print(['{}.00'.format(val) for val in myobject])
['1.00', '2.00', '2.00']
>>> print(['{:.2f}'.format(float(val)) for val in myobject])
['1.00', '2.00', '2.00']

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

对于看似不同的列表,getsizeof返回相同的值

为什么当GSON连载两个看似相同的包含HashMap有不同的行为?

SoapException具有相同的消息,但格式不同

php - 对于不同格式的相同日期时间值,`DateTimeImmutable` 的不同行为

具有相同长度的两个输入列表与具有不同长度的两个输入列表的行为不同(方案)

看似等效的列表初始化导致不同的行为

为什么对于相同但按比例缩放的数据,绘图的行为会有所不同?

对于相同的资源,如何在不同的路由上具有不同的路由ID?

对于具有不同值的相同查询,Postgres 解释计划是不同的

如何合并具有相同元素的不同列表

在Haskell中过滤具有相同数量的不同元素的列表

具有不同填充/间距的相同 SharePoint 列表结果

验证具有不同格式的日期列表

为什么订阅相同序列的不同可观察对象时,ReplySubject具有不同的行为?

为什么这些看似相同的代码片段的行为不同?(Python 3)

为什么我在 2 个看似相同的 CosmosDb 集合之间看到不同的索引行为

R:对于具有不同条件的循环,使用相同数据填充2个向量

对于具有不同构面编号且坐标固定的图,获得相同的高度?

对于不同的自定义输入形状,MobileNetV2 如何具有相同数量的参数?

与PC相比,jQuery在移动设备上的行为有所不同,具有相同的代码

对于具有相同ID列表值且不在其他列中的每个记录

如果这些字典对于特定键具有相同的值,如何从列表中提取字典

具有相同数据的两种不同格式的文件是否可以具有相同的校验和值?

对于相同的输入字符串,正则表达式的行为有所不同

在两个不同组件中具有相同行为的按钮

UML中继承的actor具有不同行为的相同用例

Git core.safecrlf对具有相同行尾的文件的不同行为

如何在Haskell中使具有不同行为的相同类型?

Python-行为-具有相同名称的两个不同步骤