根据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)
给出了真的吗?
我该怎么做这样的比较?
答案 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