python中的string和int的内部比较[重复]


问题内容

这个问题已经在这里有了答案

Python
2如何比较string和int?为什么列表比较的结果大于数字,而元组的结果大于列表?

(2个答案)

7个月前关闭。

当将一个字符串与一个整数进行比较时,该字符串和int会在内部与ASCII码进行比较,还是怎么回事?我知道字符串比较大于整数,但是内部比较是如何发生的呢?

>>> "a" > 1
True

问题答案:

在您的示例中,1 < "a"因为for的“ i”int按字母顺序在for的“ s”之前string

文档

不同类型的对象(不同的数字类型和不同的字符串类型除外)绝不会相等。这样的对象被一致但任意地排序(以便对异构数组进行排序会产生一致的结果)。

我相信这是python 3改变的事情之一(您会在TypeError这里得到)。


至于在CPython中是如何完成的,除了数字以外,其他类型的对象均按其类型名称排序;不支持正确比较的相同类型的对象按其地址排序。 请注意,这是 实现
的一部分,而不是语言的一部分。