【问题标题】:Python list greater than number [duplicate]Python列表大于数字[重复]
【发布时间】:2011-11-02 07:37:39
【问题描述】:

我发现列表大于数字。

>>> [1,2,3] > 1000
True

这有什么原因吗?我无法使用 int([1,2,3]) 将列表转换为 int。无法将 int 转换为带有 list(1000) 的列表。那么python是如何比较两者的呢?

【问题讨论】:

  • @Mike,没有。你得到一个 TypeError
  • 找到它:埋在PEP 3100中:“不同类型之间的比较==!=之外的将引发异常,除非该类型明确支持”
  • 我发现了一个错误但它已经被修复了。

标签: python python-2.7


【解决方案1】:

在这种“不匹配”类型的情况下,类型按类型名称按字典顺序列出:“列表”按字母顺序位于“int”之后,因此它更大。

CPython 实现细节:不同类型的对象,除了 数字按其类型名称排序;相同类型的对象 不支持正确比较的按其地址排序。 (source)

排序没有语言规范(除了它是一致的事实)。碰巧 CPython 是最常见的实现,其中存在按类型名称按字典顺序排列的语言细节。

【讨论】:

  • 正要说这个。在 Python 3 中,它们是不可比的。此外,在 Python 2.x 中 None 总是比其他任何东西都少。
  • @Uku Loskit “类型按字典顺序列出”在哪里?
  • @machine 向往 & eyquem:稍微更新了答案。
  • @eyquem 他的意思是“通过类型名称的字典比较来比较对象”。
【解决方案2】:

根据Python Reference Manual

大多数其他内置类型的对象比较不相等,除非它们是同一个对象;一个对象被认为比另一个对象更小还是更大的选择是任意的,但在程序的一次执行中始终如一。

【讨论】:

    猜你喜欢
    • 2020-02-14
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2023-03-30
    • 2019-06-30
    • 1970-01-01
    相关资源
    最近更新 更多