python的元组/列表/集合还能比较大小?

Python是非常灵活的语言,元组和列表,集合也是可以比较大小的,这篇文章就给大家介绍下python怎么给元组和列表,集合比较大小

元组比较大小

(1, 5) < (2, 3) # True
(2, 8) < (2, 6) # False
(1, 2) < (1, 2) # False
(1, 1, -1) < (1, 2) # True
(1, 2, -1) < (1, 2) # False

原理: 按索引依次比较对应元素, 如不相等,则结果为元组比较的结果(如上第1行代码); 如相等,则比较下一对元素,直至有结果(如上第2行代码); 如所有对应元素都相等,则判为相等(如上第3行代码); 如果元组长度不同,而且小元组和大元组的前几项对应相等,则默认大元组大于小元组,与大元组剩余项的值无关(如上第5行代码)。

这个技巧在实际中也有应用,比如python的six模块。下图截取部分six.py的代码,作者就是用元组大小比较来判断当前python的version是不是3.4以上的

# Useful for very coarse version differentiation.
PY2 = sys.version_info[0] == 2
PY3 = sys.version_info[0] == 3
PY34 = sys.version_info[0:2] >= (3, 4)

列表比较大小

列表比较大小的原理和元组一样。

[1,2] < [2,3]     # True
[3,5] < [3,6]     # True
[1,2] == [1,2]    # True
[1,2,3] == [1,2]  # False
[1,2,3] >= [1,2]  # True
[1,2,-1] >= [1,2] # True


集合比较大小

集合的大小比较和列表和元组不同,集合判断操作符只会判断集合的包容性。 如下面的测试1,后者包含前者,所以后者>前者。但是两个集合部分包含不能做比较,比如测试4,{2,3}是两个集合的并集,但是这两个集合不能相比较。

#测试1
{1,2,3} < {1,2,3,4,5} # True 
#测试2
{1,2,3} < {4,5,6,7} # False
#测试3
{1,2,3} > {2,3} # True
#测试4
{1,2,3} > {2,3,4} #False

分享这个小技巧后,能很方便的进行常规的比较计算,提高代码的效率。

原文链接:,转发请注明来源!