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)