Python中的元组比较

根据这个 :

元组和列表按照字典顺序使用相应元素的比较进行比较。 这意味着为了比较相等,每个元素必须相等并且两个序列必须是相同类型并且具有相同长度。

如果不相等,序列的顺序与它们的第一个不同元素相同。 例如,cmp([1,2,x],[1,2,y])与cmp(x,y)的返回值相同。 如果相应的元素不存在,则首先排序较短的序列(例如,[1,2] <[1,2,3])。

如果我理解正确

(a, b, c) < (d, e, f)

给如果

a < d and b < e and c < f

为什么

(1, 2, 3) < (2, 0, 4)

给True?

我怎么做这样的比较?


你的理解是有缺陷的。 这不是and -这是一个级联比较。

a < d or (a == d and b < e) or (a == d and b == e and c < f)

理解这个任意长度元组的另一种方法......

def tuple_less_than(tuple1, tuple2):
    for item1, item2 in zip(tuple1, tuple2):
        if item1 != item2:
            return item1 < item2
    return len(tuple1) < len(tuple2)

简单地解释一下,将它们看作是十进制数字

123 < 204

这是过于简单化了,但我的意思是,它比较元素一个接一个,只要元素不一样就结束。


把它想象成比较2个字符串。 每个元素的第一个不相等的比较决定比较结果。

(1, 2, 3) < (2, 3)
True

"123" < "23"
True
链接地址: http://www.djcxy.com/p/53589.html

上一篇: Tuple comparison in Python

下一篇: Comparing all elements of two tuples (with all() functionality)