概述
排序是程序中经常用到的一种算法,无论是冒泡排序还是选择排序,排序的核心就是不断比较两者大小。排序算法的示例可以看这里:http://t.cn/A6ZomOGj
数值的比较很好理解,但如果是字符串呢?或者是dict呢?这时就需要把比较过程通过函数抽象表达出来,Python自带sorted函数就可以对list进行排序:
>>> sorted([-45,5,1,-10,9,81,-90])
[-90, -45, -10, 1, 5, 9, 81]
sorted函数同时也是一个高阶函数,可以接收一个函数做key来进行自定义排序,例如我们用abs做key,将序列按绝对值大小排序:
>>> sorted([15,-20,60,-75,13,-2], key=abs)
[-2, 13, 15, -20, 60, -75]
请注意,key只负责中间运算,返回的排序结果依然是之前list中的数,整个过程可以理解为list先按照key函数abs计算生成一个对应顺序的新的序列keys,sorted排序后,将keys中每个元素对应的原序列中的元素再封装到新的list,如下所示,list依然是原来的内容,sorted函数相当于生成了一个全新的list:
>>> list = [15,-20,60,-75,13,-2]
>>> sorted(list, key=abs)
[-2, 13, 15, -20, 60, -75]
>>> list
[15, -20, 60, -75, 13, -2]
我们再看一个字符串排序的例子:
>>> sorted(['Hello','Anna','is','a','girl'])
['Anna', 'Hello', 'a', 'girl', 'is']
细心的朋友可能已经发现了,字符串的排序是按照ASCII编码的大小进行的大写在前,小写在后。如果我们要忽略大小写呢?我们知道sorted是个高阶函数,可以传入key函数,将字符串忽略大小写:
>>> sorted(['Hello','Anna','is','a','girl'], key=str.lower)
['a', 'Anna', 'girl', 'Hello', 'is']
如果要反向排序,可以传入第三个参数reverse:
>>> sorted(['Hello','Anna','is','a','girl'], key=str.lower, reverse=True)
['is', 'Hello', 'girl', 'Anna', 'a']
最后
以上就是懵懂飞鸟为你收集整理的python字符串长度排序算法_从零开始学Python-Day28-sorted排序算法的全部内容,希望文章能够帮你解决python字符串长度排序算法_从零开始学Python-Day28-sorted排序算法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复