为什么Python 2允许列表和数字之间的比较?

Tra*_*son 9 python python-2.7

我最近在我的程序中发现了一个拼写错误

while len(first_list) > second_list:
    do_stuff
Run Code Online (Sandbox Code Playgroud)

我打得四处这一点,并发现5 < ["apple"] == True5 > ["apple"] == False

为什么Python允许这些类型的比较?什么是在引擎盖下评估,以确定5是否小于["apple"]

Mar*_*oun 4

我认为在这种情况下比较类型,所以就像写:

\n\n
type(5) < type(["apple"])\n
Run Code Online (Sandbox Code Playgroud)\n\n

由于“int”和“list”是按字典顺序比较的(“i”<“l”),因此您将得到此输出。

\n\n

如果你试试:

\n\n
"5" > ["apple"]\n
Run Code Online (Sandbox Code Playgroud)\n\n

你会得到 False,因为“string”>“list”。

\n\n

文档

\n\n
\n

CPython实现细节:除数字之外的不同类型的对象按其类型名称排序;不\xe2\x80\x99t 支持正确比较的相同类型的对象按其地址排序。

\n
\n

  • @yBot“不同类型的对象**除了**数字[...]” (3认同)
  • 不正确。`{}&lt;0` 计算结果为 False,但 `dictionary` 位于 `int` 之前 (2认同)