所以我知道元组的比较按字典顺序工作:
元组和列表使用对应元素的比较按字典顺序进行比较。这意味着要比较相等,每个元素必须比较相等,并且两个序列必须是相同的类型并且具有相同的长度。
如果不相等,则序列的排序与其第一个不同的元素相同。例如, cmp([1,2,x], [1,2,y]) 返回与 cmp(x,y) 相同的结果。如果对应的元素不存在,则先排序较短的序列(例如,[1,2] < [1,2,3])。
所以从这里:
>>> a = (100, 0)
>>> b = (50, 50)
>>> a > b
True
但我想按顺序比较 2 个元组的所有元素,所以在功能上我想要类似的东西(使用上面的值):
>>> a > b
(True, False) #returned tuple containing each comparison
>>> all(a > b)
False
作为实践中的一个例子,对于像屏幕坐标这样的东西,如果你想检查某个东西是否在 (0,0) 处的屏幕“内部”,但是如果 x 坐标是像 coord > (0,0) 这样的比较大于 0,但 y 坐标更小它仍然会返回 true,这不是这种情况下需要的。
作为一个子问题/讨论:
我不确定为什么以这种方式返回比较 2 个不同值的元组。你没有得到任何类型的索引,所以你从比较一个元组(不是测试相等性)中得到的唯一一件事是,在元组中的某个点,其中一个比较会在它们是时抛出一个真值或假值不相等。你怎么能利用它?