Python中的元组比较
根据这个链接:
元组和列表的比较是通过逐个比较它们的元素来进行的。这意味着,要想两个序列相等,它们的每个元素都必须相等,并且这两个序列必须是同一种类型,长度也要相同。
如果不相等,那么比较的结果会根据它们第一个不同的元素来决定顺序。例如,比较[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)