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