【问题标题】:In python, (0, 1, 2000000) < (0, 3, 4) = True, why?在 python 中,(0, 1, 2000000) < (0, 3, 4) = True,为什么?
【发布时间】:2025-11-28 13:50:01
【问题描述】:

我尝试了 2000000

但是为什么 (0, 1, 2000000)

【问题讨论】:

    标签: python-2.7 comparison tuples


    【解决方案1】:

    来自docs

    元组和列表使用对应元素的比较按字典顺序进行比较。

    如果不相等,则序列的排序与其第一个不同的元素相同。例如, cmp([1,2,x], [1,2,y]) 返回的结果与 cmp(x,y) 相同。

    所以在(0, 1, 2000000) &lt; (0, 3, 4) 中,第一对元素匹配,所以比较第二对。由于1小于3,所以整个就是True,剩下的元素根本不用求值。

    这与电话簿中使用的顺序基本相同,只是从字符泛化到任何类型。

    如果你想快速比较所有元素,你可以使用 NumPy:

    import numpy as np
    np.all(np.array((0, 1, 2000000)) < np.array((0, 3, 4)))
    

    这给出了False,因为它正在对矢量化比较结果进行逻辑与。

    【讨论】:

    • 因此,对于任何关系运算符,它都会跳过序列中的初始值集,直到找到不相等的元素,然后将考虑那些不相等的元素进行比较。我说的对吗?
    • 对。这被称为“字典比较”。
    最近更新 更多