Python中的元组比较

时间:2014-05-17 19:11:33

标签: python comparison tuples

根据this

  

使用字典比较词典和列表进行比较   相应的元素。这意味着要比较相等的每个元素   必须比较相等,两个序列必须是相同的类型和   长度相同。

     

如果不相等,则序列的排序与第一个序列相同   不同的元素。例如,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)

给出了真的吗?

我该怎么做这样的比较?

3 个答案:

答案 0 :(得分:5)

你的理解是有缺陷的。它不是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)

答案 1 :(得分:0)

简单解释一下,读取值就好像它们是十进制数

123 < 204

这是过于简单的,但我的意思是,它逐个比较元素,一旦元素不相同就结束。

答案 2 :(得分:0)

将其视为比较2个字符串。每个元素的第一次非等量比较确定比较结果。

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

"123" < "23"
True