首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

关于Python 3.x版本中列表sort()步骤的若干疑问

2013-01-06 
关于Python 3.x版本中列表sort()方法的若干疑问1.关于sort()方法的两个关键字参数:key和cmp不是太理解什么

关于Python 3.x版本中列表sort()方法的若干疑问
1.关于sort()方法的两个关键字参数:key和cmp不是太理解什么意思
2.关于下面的代码:
>>> x=['abc','abcd','aaa']
>>> x.sort(key=len)
>>> x
['abc', 'aaa', 'abcd']
>>> 
>>> x=['abc','abcd','aaa']
>>> x
['abc', 'abcd', 'aaa']
>>> x=['abc','abcd','aaa']
>>> x.sort(key=len,reverse=True)
>>> x
['abcd', 'abc', 'aaa']
第一个x返回的为什么不是['aaa','abc','abcd']?
就是当aaa和abc两个len相同时,排列的一句依据是什么?
[解决办法]

引用:
引用:
['abcd', 'abc', 'aaa']
第一个x返回的为什么不是['aaa','abc','abcd']?


这说明python用的排序算法是“不稳定的”。

当两个值一样时,有的算法会保证保持它们原来的次序(稳定的),反之,则称该算法是“不稳定的”。这儿(http://baike.baidu.com/view/547325.htm)有更详细的解释。
……


说反了,python用的排序是稳定的,'abc'排在'aaa'之前是因为它们在原list中的次序就是这样的。
[解决办法]
你指定key=len,就是比较len()之后的结果,其他排序顺序是由算法本身决定的,看python实现的是什么算法了,算法是否是稳定排序了。

热点排行