元组比较算法在python中的工作原理

元组比较算法在python中的工作原理,python,python-2.7,Python,Python 2.7,我执行了以下元组cmp(),但无法理解cmp算法 a) 当两个元组相等时,相同的数据类型,相同的值 >>> t=(1,2) >>> t1=(1,2) >>> print cmp(t,t1) 0 b) 当第二个值较大时 >>> t=(1,2) >>> t1=(2,2) >>> print cmp(t,t1) -1 c) 等等 >>> t=(1,2) >>&g

我执行了以下元组cmp(),但无法理解cmp算法

a) 当两个元组相等时,相同的数据类型,相同的值

>>> t=(1,2)
>>> t1=(1,2)
>>> print cmp(t,t1)
0
b) 当第二个值较大时

>>> t=(1,2)
>>> t1=(2,2)
>>> print cmp(t,t1)
-1
c) 等等

>>> t=(1,2)
>>> t1=('a',2)
>>> print cmp(t,t1)
-1

>>> t=(1,2)
>>> t1=('a',2)
>>> print cmp(t1,t)
1


>>> t=(1,2)
>>> t1=(1,2,3)
>>> print cmp(t,t1)
-1

大多数地方都没有元组。正是逗号运算符使对象成为元组,只使用
(…)
将表达式分组:

>>> (1)
1
>>> 1,
(1,)
>>> type((1))
<type 'int'>
>>> type((1,))
<type 'tuple'>

这是预期行为,有3种情况:

cmp() returns -1 if x < y
cmp() returns 0 if x == y
cmp() returns 1 if x > y
它们都是整数,元组至少由一个逗号组成
(1,)
(1,2)
等。因为3大于2,所以返回1

>>> t=(3)
>>> t1=('a')
>>> print cmp(t,t1)
-1
整数和字符,在本例中,a具有更大的asciii值so-1

>>> t1=(2)
>>> t=(2,3)
>>> print cmp(t,t1)
1
元组大于int so 1

>>> t=('a')
>>> t1=(3)
>>> print cmp(t,t1)
1
“a”大于3 so 1,与另一个相反

>>> t=(2)
>>> t1=(3,2)
>>> print cmp(t,t1)
-1

2只是一个整数。

(1)
只是
1
。一个元素元组看起来像
(1,)
。为了可读性,您一直更改
t
t1
声明的顺序是没有帮助的。我已经更新了问题和顺序。希望它能让事情变得更清楚OP希望比较元组,并问为什么结果出乎意料,因为他们希望比较元组。还没有完成,请回答我有时候…如果你打算从一个部分答案开始,至少给出一个正确的部分答案。这部分没有回答问题,OP清楚地知道
cmp()
是如何工作的。是的,你是对的,但是在电话上打字并不总是很方便。。。我编辑了我的答案…但是你的答案中仍然有错误。一个元组至少由2个元素组成是绝对不正确的,因为
1,
是一个只有一个元素的元组。谢谢Martijn,我将更新我的问题。@user3812837:剩下的恐怕是一个重复的问题。
>>> t=('a')
>>> t1=(3)
>>> print cmp(t,t1)
1
>>> t=(2)
>>> t1=(3,2)
>>> print cmp(t,t1)
-1