可能重复:
Python 如何比较字符串和整数?
一位实习生只是要求我帮助调试看起来像这样的代码:
widths = [image.width for image in images]
widths.append(374)
width = max(widths)
...第一行应该是:
widths = [int(image.width) for image in images]
因此,代码选择了字符串“364”而不是整数 374。Python 到底如何比较字符串和整数?我可以理解将单个字符(如果 python 有
char
数据类型)与整数进行比较,但我没有看到任何直接的方法来将字符串与整数进行比较。
Python 2.x 将 every 内置类型与其他类型进行比较。来自文档:
不同类型的对象,除了不同的数字类型和不同的字符串类型之外,永远不会比较相等;这些对象的顺序一致但任意(以便对异构数组进行排序会产生一致的结果)。
CPython 中的这种“任意顺序”实际上是按类型名称排序的。
在 Python 3.x 中,如果尝试将字符串与整数进行比较,您将得到
TypeError
。
在 python 2.x 中比较不兼容类型的值时,排序将是任意但一致的。这是为了允许您将不同类型的值放入排序的集合中。
在 CPython 2.x 中,任何字符串都将始终高于任何整数,但正如我所说,这是任意的。实际的顺序并不重要,重要的是顺序一致(即您不会遇到
x > y
和 y > z
,而是 z > x
)的情况。
来自文档:
大多数其他内置类型的对象 比较不相等,除非它们是 同一个物体;选择是否之一 物体被认为较小或较大 比另一个是任意制作的 但在一次执行中始终如一 一个程序的
希望这足够清楚 - 就像已经说过的那样,它是任意的。