Python中的元组比较

3 投票
3 回答
3119 浏览
提问于 2025-04-18 06:52

根据这个链接

元组和列表的比较是通过逐个比较它们的元素来进行的。这意味着,要想两个序列相等,它们的每个元素都必须相等,并且这两个序列必须是同一种类型,长度也要相同。

如果不相等,那么比较的结果会根据它们第一个不同的元素来决定顺序。例如,比较[1,2,x]和[1,2,y]的结果和比较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呢?

我该如何进行这样的比较呢?

3 个回答

0

可以把它想象成比较两个字符串。每个元素的第一次不相等的比较就决定了最终的比较结果。

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

"123" < "23"
True
0

简单来说,就是把这些值当作十进制数字来读取。

123 < 204

虽然这样说有点过于简单,但我的意思是,逐个比较这些元素,一旦发现元素不一样,就停止比较。

6

你的理解有点问题。这里不是说 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)

撰写回答