在Python中将字符串与float进行比较

时间:2013-10-31 17:55:52

标签: string floating-point python-2.x

我在python shell中试过这个

>>> a='apple'
>>> b=11.1
>>> a>b
True
>>> a
'apple'
>>> b>a
False

有人可以向我解释a>b是如何真实的吗?当a是字符串且b是浮点数时。

2 个答案:

答案 0 :(得分:4)

不同类型的元素之间的顺序比较是Python 2.x中的一个“设计错误”,已在Python 3中删除(在这里你会遇到运行时错误)。

在3.x之前纠正它不是一个选项,因为很多现有的软件在异构容器上进行排序(而版本3是第一个故意破坏向后兼容性的软件)。

在Python 2.x中,您可以比较< / >的任何内容,唯一的例外是明确禁止此操作的复数。

不同类型的比较排序结果是任意的,但至少对于Python解释器的给定运行是固定的,请参阅http://docs.python.org/2/reference/expressions.html#not-in。不同非数字类型的值始终被视为不同。

答案 1 :(得分:1)

在Python 2中,无法比较的类型之间的比较经常“有效”,从而产生毫无意义的结果。有时它很有趣:'aleph0' > float('+inf')。但大多数时候它只是愚蠢。

所以Python 3 has removed this'a' > 1.0相当合理地提出了TypeError