在Python中,元组比较是如何工作的?

时间:2011-03-13 20:52:30

标签: python comparison tuples

我一直在阅读 Core Python 编程书,作者给出了一个例子:

(4, 5) < (3, 5) # Equals false

所以,我想知道,它是如何/为什么它等于假? python如何比较这两个元组?

不过,书中没有解释。

5 个答案:

答案 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])。

不幸的是,该页面似乎在最新版本的文档中消失了。