python中

python中,(3,2)<('a','b')为什么是true,'abc'>'xyz'是false

(3,2)<('a','b') ,python里面tuple的比较是依次比较每一个项,首先看3和'a'的ascii值,3的ascii值是51, a的ascii值是97,第一个项就小于了,所以是true
'abc'>'xyz'是比较字符串,也是从第一个字符开始依次比较,因为a的ascii值小于x,所以false
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-27
py中字符串的比较默认是通过ASCII来比较,通过重载可以实现其它的比较策略.
而第一个(3,2)<('a','b')
只是在2x版本里支持,比较的结果无意义,并不是数字多大都小于字符,而是在比较之前首先比较类型,
标识数字类型小于字符串类型,可以通过一个测试来看看比较的顺序.

a = [ { } ,( ) ,[ ] ,1 ,'ds' ,object( ) ,object ]

print( sorted( a ) )

得出的结果是
[1, {}, [], <object object at 0x00B80468>, 'ds', (), <type 'object'>]

这种类型的比较没有任何的意义,所以在3x版本里默认将不允许这种比较,只会得到TypeError.来自:求助得到的回答本回答被提问者采纳
第1个回答  2012-12-27
‘abc'>'xyz'好解释是字符串比较 因为a的ASCII小于x的ASCII

前面一个奇怪。我试了一下
>>> print (3,2)<(3,1)
False
>>> print (3,2)<(3,3)
True
>>> print (0xFFFFFFFFFFFFFFF,2)<(3,2)
False
>>> print (0xFFFFFFFFFFFFFFF,2)<(chr(3),2)
True
>>>

这样可以看出来'a'应该是一个字符。在python里可能有一个规则。无论数字多大,都小于字符。

其它的我也不知道怎么解释了。本回答被网友采纳
相似回答