【发布时间】:2012-05-08 17:18:46
【问题描述】:
所以我知道comparisons on tuples 按字典顺序工作:
元组和列表使用对应元素的比较来按字典顺序进行比较。这意味着要比较相等,每个元素必须比较相等,并且两个序列必须是相同的类型并且具有相同的长度。
如果不相等,则序列的排序与其第一个不同的元素相同。例如, cmp([1,2,x], [1,2,y]) 返回与 cmp(x,y) 相同的结果。如果对应的元素不存在,则先排序较短的序列(例如,[1,2]
所以从这里:
>>> 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),但是做了一个比较像 coord > (0,0),如果x 坐标大于 0,但 y 坐标更小它仍然会返回 true,这不是本例所需要的。
作为一个子问题/讨论:
我不确定为什么以这种方式返回比较 2 个不同值的元组。您没有得到任何类型的索引,因此您从比较元组(不是测试相等性)中得到的唯一结果是,在元组中的某个点,其中一个比较会在它们是时抛出真值或假值不相等。你怎么能利用它?
【问题讨论】:
-
元组比较的一个有用情况是版本号;
(3, 1, 4, 2) < (3, 2, 0, 1)之类的
标签: python comparison tuples language-design