我发现列表大于数字。
>>> [1,2,3] > 1000
True
这有什么原因吗?我无法使用int([1,2,3])
将列表转换为int。无法将int转换为list(1000)
的列表。那么python如何比较两者?
答案 0 :(得分:27)
在这种“不匹配”类型的情况下,类型按字典顺序列出类型名称:“list”按字母顺序排在“int”之后,因此它更大。
CPython实现细节:除了以外的不同类型的对象 数字按其类型名称排序;相同类型的对象 不支持正确比较的,按地址排序。 (source)
订购没有语言规范(除了它是一致的事实)。恰好在这种情况下,CPython是最常见的实现,其中存在按类型名称按字典顺序排序的语言细节。
答案 1 :(得分:10)
内置类型的大多数其他对象比较不相等,除非它们是同一个对象;一个对象被认为是小于还是大于另一个对象的选择是在程序的一次执行中任意但一致的。