为什么'362'> 378?

Jas*_*ker 4 python string comparison integer

可能重复:
Python如何比较字符串和int?

实习生只是让我帮忙调试看起来像这样的代码:

widths = [image.width for image in images]
widths.append(374)
width = max(widths)
Run Code Online (Sandbox Code Playgroud)

...当第一行应该是:

widths = [int(image.width) for image in images]
Run Code Online (Sandbox Code Playgroud)

因此,代码选择字符串'364'而不是整数374. python如何比较字符串和整数?我可以理解将单个字符(如果python具有char数据类型)与整数进行比较,但我没有看到任何直接的方法将字符串与整数进行比较.

Sve*_*ach 11

Python 2.x将每个内置类型与其他类型进行比较.来自文档:

除了不同的数字类型和不同的字符串类型之外,不同类型的对象永远不会相等; 这些对象是一致但任意排序的(因此排序异构数组会产生一致的结果).

CPython中的这个"任意顺序"实际上是按类型名称排序的.

在Python 3.x中,TypeError如果您尝试将字符串与整数进行比较,则会得到一个.


sep*_*p2k 6

在比较python 2.x中不兼容类型的值时,排序将是任意的但是一致的.这是为了允许您将不同类型的值放在已排序的集合中.

在CPython 2.x中,任何字符串都将始终高于任何整数,但正如我所说,这是任意的.实际的排序并不重要,排序是一致的很重要(即你不会得到例如x > yy > z,但是z > x)的情况.