我一直在阅读 Core Python 编程书,作者给出了一个例子:
(4, 5) < (3, 5) # Equals false
所以,我想知道,它是如何/为什么它等于假? python如何比较这两个元组?
不过,书中没有解释。答案 0 :(得分:146)
按位置比较元组: 将第一个元组的第一项与第二元组的第一项进行比较;如果它们不相等(即第一个大于或小于第二个)那么这就是比较的结果,否则考虑第二个项目,然后是第三个项目,依此类推。
请参阅doc:
序列类型也支持比较。特别是,通过比较相应的元素,按字典顺序比较元组和列表。这意味着要比较相等,每个元素必须比较相等,并且两个序列必须是相同的类型并具有相同的长度。
另外this:
使用相应元素的比较,按字典顺序比较元组和列表。这意味着要比较相等,每个元素必须比较相等,并且两个序列必须是相同的类型并具有相同的长度。
如果不相等,则序列的排序与其第一个不同的元素相同。例如,cmp([1,2,x],[1,2,y])返回与cmp(x,y)相同的值。如果相应的元素不存在,则较短的序列被认为较小(例如,[1,2]&lt; [1,2,3]返回True)。
注意1 :<
和>
并不意味着“小于”和“大于”,而是“在之前”和“在之后”:所以(0 ,1)“在之前”(1,0)。
注意2 :不能将元组视为n维空间中的向量,并根据它们的长度进行比较。
注释3 :引用问题Python 2 tuple comparison:只有当第一个元素中的任何元素大于第二个中的相应元素时,才认为元组比另一元素“更大”
答案 1 :(得分:19)
Python documentation确实解释了它。
比较元组和列表 按字典顺序使用比较 相应的元素。这意味着 要比较相等,每个元素 必须比较平等和两个 序列必须是相同的类型和 长度相同。
答案 2 :(得分:1)
Comparing tuples
A comparison operator in Python can work with tuples.
The comparison starts with a first element of each tuple. If they do not compare to =,< or > then it proceed to the second element and so on.
It starts with comparing the first element from each of the tuples
Let's study this with an example-
#case 1
a=(5,6)
b=(1,4)
if (a>b):print("a is bigger")
else: print("b is bigger")
#case 2
a=(5,6)
b=(5,4)
if (a>b):print("a is bigger")
else: print ("b is bigger")
#case 3
a=(5,6)
b=(6,4)
if (a>b):print("a is bigger")
else: print("b is bigger")
Case1: Comparison starts with a first element of each tuple. In this case 5>1, so the output a is bigger
Case 2: Comparison starts with a first element of each tuple. In this case 5>5 which is inconclusive. So it proceeds to the next element. 6>4, so the output a is bigger
Case 3: Comparison starts with a first element of each tuple. In this case 5>6 which is false. So it goes into the else loop prints "b is bigger."
conclusion: Tuples always compare its first index and gives output according to your program.it does not compare all the elements.
答案 3 :(得分:0)
a = ('A','B','C') # see it as the string "ABC"
b = ('A','B','D')
A与其他元素一样转换为对应的ASCII ord('A') #65
所以,
>> a>b # True
您可以将其视为在字符串之间进行比较(实际上是这样)
整数也一样。
x = (1,2,3) # see it the string "123"
y = (1,2,2)
x > y # False
因为(1不大于1,移至下一个,2不大于2,移至下一个2小于3-按字典顺序-)
上面的答案中提到了重点
将其视为元素是在另一个字母上不是元素大于元素之前,在这种情况下,将所有元组元素视为一个字符串。
答案 4 :(得分:0)
python 2.5 documentation解释得很好。
按字典顺序使用相应元素的比较来比较对话和列表。这意味着要比较相等,每个元素必须比较相等,并且两个序列必须具有相同的类型且长度相同。
如果不相等,则序列与它们的第一个不同元素的排序相同。例如,cmp([1,2,x],[1,2,y])返回的结果与cmp(x,y)相同。如果相应的元素不存在,则较短的序列首先被排序(例如[1,2] <[1,2,3])。
不幸的是,该页面似乎在最新版本的文档中消失了。